From: Yann Collet Date: Wed, 13 Sep 2017 20:24:08 +0000 (-0700) Subject: Merge pull request #838 from stellamplau/ldm-mergeDev X-Git-Tag: fuzz-corpora2~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f1571dad8f51d0aa5251eb1ad65193e04da9923d;p=thirdparty%2Fzstd.git Merge pull request #838 from stellamplau/ldm-mergeDev Add long distance matcher --- f1571dad8f51d0aa5251eb1ad65193e04da9923d diff --cc lib/compress/zstd_compress.c index 884a4e00d,04077f281..9f59ea686 --- a/lib/compress/zstd_compress.c +++ b/lib/compress/zstd_compress.c @@@ -389,27 -396,50 +406,60 @@@ size_t ZSTD_CCtxParam_setParameter if (value == 0) return 0; #ifndef ZSTD_MULTITHREAD if (value > 1) return ERROR(parameter_unsupported); -#endif + return 0; +#else return ZSTDMT_initializeCCtxParameters(params, value); +#endif case ZSTD_p_jobSize : +#ifndef ZSTD_MULTITHREAD + return ERROR(parameter_unsupported); +#else if (params->nbThreads <= 1) return ERROR(parameter_unsupported); return ZSTDMT_CCtxParam_setMTCtxParameter(params, ZSTDMT_p_sectionSize, value); +#endif case ZSTD_p_overlapSizeLog : +#ifndef ZSTD_MULTITHREAD + return ERROR(parameter_unsupported); +#else if (params->nbThreads <= 1) return ERROR(parameter_unsupported); return ZSTDMT_CCtxParam_setMTCtxParameter(params, ZSTDMT_p_overlapSectionLog, value); +#endif + case ZSTD_p_enableLongDistanceMatching : + if (value != 0) { + ZSTD_cLevelToCCtxParams(params); + params->cParams.windowLog = ZSTD_LDM_WINDOW_LOG; + } + return ZSTD_ldm_initializeParameters(¶ms->ldmParams, value); + + case ZSTD_p_ldmHashLog : + if (value == 0) return 0; + CLAMPCHECK(value, ZSTD_HASHLOG_MIN, ZSTD_HASHLOG_MAX); + params->ldmParams.hashLog = value; + return 0; + + case ZSTD_p_ldmMinMatch : + if (value == 0) return 0; + CLAMPCHECK(value, ZSTD_LDM_MINMATCH_MIN, ZSTD_LDM_MINMATCH_MAX); + params->ldmParams.minMatchLength = value; + return 0; + + case ZSTD_p_ldmBucketSizeLog : + if (value > ZSTD_LDM_BUCKETSIZELOG_MAX) { + return ERROR(parameter_outOfBound); + } + params->ldmParams.bucketSizeLog = value; + return 0; + + case ZSTD_p_ldmHashEveryLog : + if (value > ZSTD_WINDOWLOG_MAX - ZSTD_HASHLOG_MIN) { + return ERROR(parameter_outOfBound); + } + params->ldmParams.hashEveryLog = value; + return 0; + default: return ERROR(parameter_unsupported); } }