From: Paul Cruz Date: Mon, 17 Jul 2017 21:39:10 +0000 (-0700) Subject: swap buffers instead of copying memory over X-Git-Tag: v1.3.1^2~13^2^2~58 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6be22f1f842edc65ec1ddcf9c961e9bb854e1dc1;p=thirdparty%2Fzstd.git swap buffers instead of copying memory over --- diff --git a/contrib/adaptive-compression/adapt.c b/contrib/adaptive-compression/adapt.c index 67d7fcc92..3aec50c07 100644 --- a/contrib/adaptive-compression/adapt.c +++ b/contrib/adaptive-compression/adapt.c @@ -501,7 +501,12 @@ static int createCompressionJob(adaptCCtx* ctx, size_t srcSize, int last) job->src.size = srcSize; job->jobID = nextJob; job->lastJob = last; - memcpy(job->src.start, ctx->input.buffer.start, ctx->lastDictSize + srcSize); + { + /* swap buffer */ + void* const copy = job->src.start; + job->src.start = ctx->input.buffer.start; + ctx->input.buffer.start = copy; + } job->dictSize = ctx->lastDictSize; pthread_mutex_lock(&ctx->jobReady_mutex.pMutex); ctx->jobReadyID++; @@ -514,7 +519,7 @@ static int createCompressionJob(adaptCCtx* ctx, size_t srcSize, int last) if (!last) { size_t const oldDictSize = ctx->lastDictSize; DEBUG(3, "oldDictSize %zu\n", oldDictSize); - memmove(ctx->input.buffer.start, ctx->input.buffer.start + oldDictSize, srcSize); + memcpy(ctx->input.buffer.start, job->src.start + oldDictSize, srcSize); ctx->lastDictSize = srcSize; ctx->input.filled = srcSize; }