#endif
#include "wimlib.h"
+#include "wimlib/assert.h"
#include "wimlib/compiler.h"
#include "wimlib/compressor_ops.h"
#include "wimlib/compress_common.h"
/* Main bit: 1 = a match, not a literal. */
lzms_range_encode_bit(&ctx->main_range_encoder, 1);
- /* Match bit: 0 = a LZ match, not a delta match. */
+ /* Match bit: 0 = an LZ match, not a delta match. */
lzms_range_encode_bit(&ctx->match_range_encoder, 0);
/* Determine if the offset can be represented as a recent offset. */
.optim_array_length = 1024,
};
+static bool
+lzms_params_valid(const struct wimlib_compressor_params_header *);
+
static const struct wimlib_lzms_compressor_params *
lzms_get_params(const struct wimlib_compressor_params_header *_params)
{
if (params == NULL)
params = &lzms_default;
+ LZMS_ASSERT(lzms_params_valid(¶ms->hdr));
+
return params;
}
if (!lz_sarray_init(&ctx->lz_sarray, max_block_size,
params->min_match_length,
- params->max_match_length,
+ min(params->max_match_length, LZ_SARRAY_LEN_MAX),
params->max_search_depth,
params->max_matches_per_pos))
goto oom;