changed to using compressCCtx
diff --git a/contrib/adaptive-compression/multi.c b/contrib/adaptive-compression/multi.c
index 647d54b..943bd85 100644
--- a/contrib/adaptive-compression/multi.c
+++ b/contrib/adaptive-compression/multi.c
@@ -72,6 +72,7 @@
stat_t stats;
jobDescription* jobs;
FILE* dstFile;
+ ZSTD_CCtx* cctx;
} adaptCCtx;
static void freeCompressionJobs(adaptCCtx* ctx)
@@ -96,11 +97,12 @@
int const jobWriteMutexError = pthread_mutex_destroy(&ctx->jobWrite_mutex);
int const jobWriteCondError = pthread_cond_destroy(&ctx->jobWrite_cond);
int const fileCloseError = (ctx->dstFile != NULL && ctx->dstFile != stdout) ? fclose(ctx->dstFile) : 0;
+ int const cctxError = ZSTD_isError(ZSTD_freeCCtx(ctx->cctx)) ? 1 : 0;
if (ctx->jobs){
freeCompressionJobs(ctx);
free(ctx->jobs);
}
- return compressedMutexError | compressedCondError | readyMutexError | readyCondError | fileCloseError | allJobsMutexError | allJobsCondError | jobWriteMutexError | jobWriteCondError;
+ return compressedMutexError | compressedCondError | readyMutexError | readyCondError | fileCloseError | allJobsMutexError | allJobsCondError | jobWriteMutexError | jobWriteCondError | cctxError;
}
}
@@ -132,6 +134,12 @@
ctx->threadError = 0;
ctx->allJobsCompleted = 0;
ctx->adaptParam = DEFAULT_ADAPT_PARAM;
+ ctx->cctx = ZSTD_createCCtx();
+ if (!ctx->cctx) {
+ DISPLAY("Error: could not allocate ZSTD_CCtx\n");
+ freeCCtx(ctx);
+ return NULL;
+ }
if (!ctx->jobs) {
DISPLAY("Error: could not allocate space for jobs during context creation\n");
freeCCtx(ctx);
@@ -214,7 +222,7 @@
{
unsigned const cLevel = adaptCompressionLevel(ctx);
DEBUGLOG(2, "cLevel used: %u\n", cLevel);
- size_t const compressedSize = ZSTD_compress(job->dst.start, job->dst.size, job->src.start, job->src.size, cLevel);
+ size_t const compressedSize = ZSTD_compressCCtx(ctx->cctx, job->dst.start, job->dst.size, job->src.start, job->src.size, cLevel);
if (ZSTD_isError(compressedSize)) {
ctx->threadError = 1;
DISPLAY("Error: something went wrong during compression: %s\n", ZSTD_getErrorName(compressedSize));