X-Git-Url: https://wimlib.net/git/?p=wimlib;a=blobdiff_plain;f=src%2Fxpress-compress.c;h=2b3a6a6e9d980a14ce7ca2e6f062b5505c53656a;hp=77df527994483f7062bfadab49f14405456b74cd;hb=c9812a5d413382b81552979b10e5c478b3721316;hpb=06d5bfbfb5f626e617152117219bc7da1209a21c diff --git a/src/xpress-compress.c b/src/xpress-compress.c index 77df5279..2b3a6a6e 100644 --- a/src/xpress-compress.c +++ b/src/xpress-compress.c @@ -169,8 +169,14 @@ int xpress_compress(const void *__uncompressed_data, unsigned uncompressed_len, /* XPRESS requires 256 bytes of overhead for the Huffman tables, so it's * impossible cannot compress 256 bytes or less of data to less than the - * input size. */ - if (uncompressed_len <= XPRESS_NUM_SYMBOLS / 2) + * input size. + * + * +1 to take into account that the buffer for compressed data is 1 byte + * smaller than the buffer for uncompressed data. + * + * +4 to take into account that init_output_bitstream() requires at + * least 4 bytes of data. */ + if (uncompressed_len < XPRESS_NUM_SYMBOLS / 2 + 1 + 4) return 1; ZERO_ARRAY(freq_tab);