]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
fixed too large selectivity level, reported by Ilona Papava
authorYann Collet <yann.collet.73@gmail.com>
Fri, 29 Jul 2016 23:09:14 +0000 (01:09 +0200)
committerYann Collet <yann.collet.73@gmail.com>
Fri, 29 Jul 2016 23:09:14 +0000 (01:09 +0200)
lib/dictBuilder/zdict.c

index 84272d1941dc645e07c5ad28e81b6761ecdcba41..e1bece3a7cbc0401dbc28f7ffd90722900360246 100644 (file)
@@ -879,7 +879,7 @@ size_t ZDICT_trainFromBuffer_unsafe(
     U32 const dictListSize = MAX(MAX(DICTLISTSIZE, nbSamples), (U32)(maxDictSize/16));
     dictItem* const dictList = (dictItem*)malloc(dictListSize * sizeof(*dictList));
     unsigned const selectivity = params.selectivityLevel == 0 ? g_selectivity_default : params.selectivityLevel;
-    unsigned const minRep = nbSamples >> selectivity;
+    unsigned const minRep = (selectivity > 30) ? 1 : nbSamples >> selectivity;
     size_t const targetDictSize = maxDictSize;
     size_t const samplesBuffSize = ZDICT_totalSampleSize(samplesSizes, nbSamples);
     size_t dictSize = 0;