X-Git-Url: https://wimlib.net/git/?p=wimlib;a=blobdiff_plain;f=src%2Fcompress.c;fp=src%2Fcompress.c;h=aed609aa7aff560a05e11a2021af3fabdb227749;hp=efbd2085418f3685e8c0a52ec99c762d02e8b7ac;hb=6d1fcf62066cf340bcb1527fae4e366af3013ed6;hpb=737676a62120667d39b5a00efc5b3e84624fa744 diff --git a/src/compress.c b/src/compress.c index efbd2085..aed609aa 100644 --- a/src/compress.c +++ b/src/compress.c @@ -90,6 +90,9 @@ wimlib_get_compressor_needed_memory(enum wimlib_compression_type ctype, if (!compressor_ctype_valid(ctype)) return 0; + if (max_block_size == 0) + return 0; + ops = compressor_ops[ctype]; if (compression_level == 0) @@ -97,10 +100,16 @@ wimlib_get_compressor_needed_memory(enum wimlib_compression_type ctype, if (compression_level == 0) compression_level = DEFAULT_COMPRESSION_LEVEL; - size = sizeof(struct wimlib_compressor); - if (ops->get_needed_memory) - size += ops->get_needed_memory(max_block_size, compression_level); - return size; + if (ops->get_needed_memory) { + size = ops->get_needed_memory(max_block_size, compression_level); + + /* 0 is never valid and indicates an invalid max_block_size. */ + if (size == 0) + return 0; + } else { + size = 0; + } + return size + sizeof(struct wimlib_compressor); } WIMLIBAPI int