[cover] Fix divide by zero
This commit is contained in:
@@ -479,11 +479,16 @@ static COVER_segment_t COVER_selectSegment(const COVER_ctx_t *ctx, U32 *freqs,
|
|||||||
* Check the validity of the parameters.
|
* Check the validity of the parameters.
|
||||||
* Returns non-zero if the parameters are valid and 0 otherwise.
|
* Returns non-zero if the parameters are valid and 0 otherwise.
|
||||||
*/
|
*/
|
||||||
static int COVER_checkParameters(ZDICT_cover_params_t parameters) {
|
static int COVER_checkParameters(ZDICT_cover_params_t parameters,
|
||||||
|
size_t maxDictSize) {
|
||||||
/* k and d are required parameters */
|
/* k and d are required parameters */
|
||||||
if (parameters.d == 0 || parameters.k == 0) {
|
if (parameters.d == 0 || parameters.k == 0) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
/* k <= maxDictSize */
|
||||||
|
if (parameters.k > maxDictSize) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
/* d <= k */
|
/* d <= k */
|
||||||
if (parameters.d > parameters.k) {
|
if (parameters.d > parameters.k) {
|
||||||
return 0;
|
return 0;
|
||||||
@@ -648,7 +653,7 @@ ZDICTLIB_API size_t ZDICT_trainFromBuffer_cover(
|
|||||||
COVER_ctx_t ctx;
|
COVER_ctx_t ctx;
|
||||||
COVER_map_t activeDmers;
|
COVER_map_t activeDmers;
|
||||||
/* Checks */
|
/* Checks */
|
||||||
if (!COVER_checkParameters(parameters)) {
|
if (!COVER_checkParameters(parameters, dictBufferCapacity)) {
|
||||||
DISPLAYLEVEL(1, "Cover parameters incorrect\n");
|
DISPLAYLEVEL(1, "Cover parameters incorrect\n");
|
||||||
return ERROR(GENERIC);
|
return ERROR(GENERIC);
|
||||||
}
|
}
|
||||||
@@ -995,7 +1000,7 @@ ZDICTLIB_API size_t ZDICT_optimizeTrainFromBuffer_cover(
|
|||||||
data->parameters.d = d;
|
data->parameters.d = d;
|
||||||
data->parameters.steps = kSteps;
|
data->parameters.steps = kSteps;
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
if (!COVER_checkParameters(data->parameters)) {
|
if (!COVER_checkParameters(data->parameters, dictBufferCapacity)) {
|
||||||
DISPLAYLEVEL(1, "Cover parameters incorrect\n");
|
DISPLAYLEVEL(1, "Cover parameters incorrect\n");
|
||||||
free(data);
|
free(data);
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
Reference in New Issue
Block a user