From 9ac9ae0c66a35bab0243c91e4647804aa6dd336f Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Sat, 18 Mar 2023 00:17:54 -0700 Subject: [PATCH] Call wimlib_global_init() when creating compressors and decompressors All nontrivial API functions are supposed to call wimlib_global_init(). wimlib_create_compressor() and wimlib_create_decompressor() did not. Make them do so, so that CPU feature detection can be moved to wimlib_global_init(). --- src/compress.c | 7 +++++-- src/decompress.c | 7 +++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/compress.c b/src/compress.c index 1b0d2c9f..bced555e 100644 --- a/src/compress.c +++ b/src/compress.c @@ -122,6 +122,11 @@ wimlib_create_compressor(enum wimlib_compression_type ctype, { bool destructive; struct wimlib_compressor *c; + int ret; + + ret = wimlib_global_init(0); + if (ret) + return ret; destructive = (compression_level & WIMLIB_COMPRESSOR_FLAG_DESTRUCTIVE); compression_level &= ~WIMLIB_COMPRESSOR_FLAG_DESTRUCTIVE; @@ -146,8 +151,6 @@ wimlib_create_compressor(enum wimlib_compression_type ctype, c->ctype = ctype; c->max_block_size = max_block_size; if (c->ops->create_compressor) { - int ret; - if (compression_level == 0) compression_level = default_compression_levels[ctype]; if (compression_level == 0) diff --git a/src/decompress.c b/src/decompress.c index f255ea92..974483c3 100644 --- a/src/decompress.c +++ b/src/decompress.c @@ -56,6 +56,11 @@ wimlib_create_decompressor(enum wimlib_compression_type ctype, struct wimlib_decompressor **dec_ret) { struct wimlib_decompressor *dec; + int ret; + + ret = wimlib_global_init(0); + if (ret) + return ret; if (!decompressor_ctype_valid(ctype)) return WIMLIB_ERR_INVALID_COMPRESSION_TYPE; @@ -73,8 +78,6 @@ wimlib_create_decompressor(enum wimlib_compression_type ctype, dec->max_block_size = max_block_size; dec->private = NULL; if (dec->ops->create_decompressor) { - int ret; - ret = dec->ops->create_decompressor(max_block_size, &dec->private); if (ret) { -- 2.43.0