]> wimlib.net Git - wimlib/commitdiff
compress.c: Always include base compressor size
authorEric Biggers <ebiggers3@gmail.com>
Sat, 14 Jun 2014 04:31:33 +0000 (23:31 -0500)
committerEric Biggers <ebiggers3@gmail.com>
Sat, 14 Jun 2014 04:31:33 +0000 (23:31 -0500)
When the struct compressor_ops does not provide get_needed_memory(),
still include the size of the struct wimlib_compressor.

src/compress.c

index 840440770bff1bf01ba02173389c81016e37922c..039836af5c8f19d62b954c5e79ea537762bca109 100644 (file)
@@ -97,13 +97,12 @@ wimlib_get_compressor_needed_memory(enum wimlib_compression_type ctype,
 {
        const struct compressor_ops *ops;
        const struct wimlib_compressor_params_header *params;
 {
        const struct compressor_ops *ops;
        const struct wimlib_compressor_params_header *params;
+       u64 size;
 
        if (!compressor_ctype_valid(ctype))
                return 0;
 
        ops = compressor_ops[ctype];
 
        if (!compressor_ctype_valid(ctype))
                return 0;
 
        ops = compressor_ops[ctype];
-       if (ops->get_needed_memory == NULL)
-               return 0;
 
        if (extra_params) {
                params = extra_params;
 
        if (extra_params) {
                params = extra_params;
@@ -113,8 +112,10 @@ wimlib_get_compressor_needed_memory(enum wimlib_compression_type ctype,
                params = compressor_default_params[ctype];
        }
 
                params = compressor_default_params[ctype];
        }
 
-       return sizeof(struct wimlib_compressor) +
-               ops->get_needed_memory(max_block_size, params);
+       size = sizeof(struct wimlib_compressor);
+       if (ops->get_needed_memory)
+               size += ops->get_needed_memory(max_block_size, params);
+       return size;
 }
 
 
 }