# include "config.h"
#endif
-#include "wimlib.h"
#include "wimlib/assert.h"
#include "wimlib/compiler.h"
#include "wimlib/compressor_ops.h"
struct lzms_compressor_params *lzms_params)
{
lzms_params->min_match_length = (compression_level >= 50) ? 2 : 3;
- lzms_params->nice_match_length = ((u64)compression_level * 32) / 50;
+ lzms_params->nice_match_length = max(((u64)compression_level * 32) / 50,
+ lzms_params->min_match_length);
lzms_params->max_search_depth = ((u64)compression_level * 50) / 50;
lzms_params->optim_array_length = 224 + compression_level * 16;
}
lzms_get_needed_memory(size_t max_block_size, unsigned int compression_level)
{
struct lzms_compressor_params params;
+ u64 size = 0;
- lzms_build_params(compression_level, ¶ms);
+ if (max_block_size >= INT32_MAX)
+ return 0;
- u64 size = 0;
+ lzms_build_params(compression_level, ¶ms);
size += sizeof(struct lzms_compressor);
size += max_block_size;