diff --git a/src/rdkafka.c b/src/rdkafka.c index f36fe02127..7450252d9d 100644 --- a/src/rdkafka.c +++ b/src/rdkafka.c @@ -1039,21 +1039,25 @@ rd_kafka_t *rd_kafka_new (rd_kafka_type_t type, rd_kafka_conf_t *conf, "Failed to create thread: %s", strerror(err)); rd_kafka_destroy0(rk); /* handler thread */ rd_kafka_destroy0(rk); /* application refcnt */ - /* Restore sigmask of caller */ - pthread_sigmask(SIG_SETMASK, &oldset, NULL); + /* Restore sigmask of caller */ + pthread_sigmask(SIG_SETMASK, &oldset, NULL); + /* Release thread attribute storage */ + pthread_attr_destroy(&attr); errno = err; return NULL; } - /* Add initial list of brokers from configuration */ if (rk->rk_conf.brokerlist) rd_kafka_brokers_add(rk, rk->rk_conf.brokerlist); (void)rd_atomic_add(&rd_kafka_handle_cnt_curr, 1); - /* Restore sigmask of caller */ - pthread_sigmask(SIG_SETMASK, &oldset, NULL); + /* Restore sigmask of caller */ + pthread_sigmask(SIG_SETMASK, &oldset, NULL); + + /* Release thread attribute storage */ + pthread_attr_destroy(&attr); return rk; } diff --git a/src/rdkafka_broker.c b/src/rdkafka_broker.c index d2870e0871..6d8798fbec 100644 --- a/src/rdkafka_broker.c +++ b/src/rdkafka_broker.c @@ -2210,6 +2210,11 @@ static int rd_kafka_broker_produce_toppar (rd_kafka_broker_t *rkb, /* Free snappy environment */ snappy_free_env(&senv); + break; + + default: + rd_kafka_assert(rkb->rkb_rk, !*"notreached: compression.codec"); + break; } @@ -4000,8 +4005,13 @@ static rd_kafka_broker_t *rd_kafka_broker_add (rd_kafka_t *rk, free(rkb); rd_kafka_destroy(rk); - /* Restore sigmask of caller */ - pthread_sigmask(SIG_SETMASK, &oldset, NULL); + + /* Restore sigmask of caller */ + pthread_sigmask(SIG_SETMASK, &oldset, NULL); + + /* Release thread attribute storage */ + pthread_attr_destroy(&attr); + return NULL; } @@ -4012,8 +4022,11 @@ static rd_kafka_broker_t *rd_kafka_broker_add (rd_kafka_t *rk, "Added new broker with NodeId %"PRId32, rkb->rkb_nodeid); - /* Restore sigmask of caller */ - pthread_sigmask(SIG_SETMASK, &oldset, NULL); + /* Restore sigmask of caller */ + pthread_sigmask(SIG_SETMASK, &oldset, NULL); + + /* Release thread attribute storage */ + pthread_attr_destroy(&attr); return rkb; }