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().
{
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;
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)
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;
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) {