From 085179bb78248796775193433c0596969511da55 Mon Sep 17 00:00:00 2001 From: Yann Collet Date: Wed, 11 Jan 2017 15:58:05 +0100 Subject: [PATCH] fixed ZSTDMT_createCCtx() : checked inner objects are properly created --- lib/compress/zstdmt_compress.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/compress/zstdmt_compress.c b/lib/compress/zstdmt_compress.c index 5c7b654ab..5fbf32b93 100644 --- a/lib/compress/zstdmt_compress.c +++ b/lib/compress/zstdmt_compress.c @@ -206,12 +206,16 @@ ZSTDMT_CCtx *ZSTDMT_createCCtx(unsigned nbThreads) cctx->factory = POOL_create(nbThreads, 1); cctx->buffPool = ZSTDMT_createBufferPool(nbThreads); cctx->cctxPool = ZSTDMT_createCCtxPool(nbThreads); - pthread_mutex_init(&cctx->jobCompleted_mutex, NULL); + if (!cctx->factory | !cctx->buffPool | !cctx->cctxPool) { /* one object was not created */ + ZSTDMT_freeCCtx(cctx); + return NULL; + } + pthread_mutex_init(&cctx->jobCompleted_mutex, NULL); /* Todo : check init function return */ pthread_cond_init(&cctx->jobCompleted_cond, NULL); return cctx; } -size_t ZSTDMT_freeCCtx(ZSTDMT_CCtx* mtctx) /* incompleted ! */ +size_t ZSTDMT_freeCCtx(ZSTDMT_CCtx* mtctx) { POOL_free(mtctx->factory); ZSTDMT_freeBufferPool(mtctx->buffPool);