}
WIMLIBAPI int
-wimlib_set_default_compression_level(enum wimlib_compression_type ctype,
- unsigned int compression_level)
+wimlib_set_default_compression_level(int ctype, unsigned int compression_level)
{
- if ((int)ctype == -1) {
+ if (ctype == -1) {
for (int i = 0; i < ARRAY_LEN(default_compression_levels); i++)
default_compression_levels[i] = compression_level;
} else {
{
struct wimlib_compressor *c;
+ if (!compressor_ctype_valid(ctype))
+ return WIMLIB_ERR_INVALID_COMPRESSION_TYPE;
+
if (c_ret == NULL)
return WIMLIB_ERR_INVALID_PARAM;
if (max_block_size == 0)
return WIMLIB_ERR_INVALID_PARAM;
- if (!compressor_ctype_valid(ctype))
- return WIMLIB_ERR_INVALID_COMPRESSION_TYPE;
-
c = MALLOC(sizeof(*c));
if (c == NULL)
return WIMLIB_ERR_NOMEM;
{
size_t compressed_size;
- wimlib_assert(uncompressed_size <= c->max_block_size);
+ if (unlikely(uncompressed_size == 0 || uncompressed_size > c->max_block_size))
+ return 0;
compressed_size = c->ops->compress(uncompressed_data,
uncompressed_size,