diff --git a/lib/deflate_compress.c b/lib/deflate_compress.c index 604675b..8d9037a 100644 --- a/lib/deflate_compress.c +++ b/lib/deflate_compress.c @@ -2646,7 +2646,7 @@ deflate_init_offset_slot_fast(struct libdeflate_compressor *c) } LIBEXPORT struct libdeflate_compressor * -libdeflate_alloc_compressor(unsigned int compression_level) +libdeflate_alloc_compressor(int compression_level) { struct libdeflate_compressor *c; size_t size; @@ -2662,8 +2662,6 @@ libdeflate_alloc_compressor(unsigned int compression_level) if (!c) return NULL; - c->compression_level = compression_level; - switch (compression_level) { case 1: c->impl = deflate_compress_greedy; @@ -2748,6 +2746,8 @@ libdeflate_alloc_compressor(unsigned int compression_level) return NULL; } + c->compression_level = compression_level; + deflate_init_offset_slot_fast(c); deflate_init_static_codes(c); diff --git a/libdeflate.h b/libdeflate.h index c7c220b..6eabdac 100644 --- a/libdeflate.h +++ b/libdeflate.h @@ -49,7 +49,7 @@ struct libdeflate_compressor; * However, different threads may use different compressors concurrently. */ LIBDEFLATEAPI struct libdeflate_compressor * -libdeflate_alloc_compressor(unsigned int compression_level); +libdeflate_alloc_compressor(int compression_level); /* * libdeflate_deflate_compress() performs raw DEFLATE compression on a buffer of