X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=src%2Fxpress-compress.c;h=21118e7652b2e17d2287c085cc7e571c4bf88c3c;hb=34a91e36924e10b924117d91acd116ade58df0b4;hp=548c32cbc8a9cd5d1f56e7d011668eb5a65d3858;hpb=720db87557918105b17b51b03f264ddb9b89d2b9;p=wimlib diff --git a/src/xpress-compress.c b/src/xpress-compress.c index 548c32cb..21118e76 100644 --- a/src/xpress-compress.c +++ b/src/xpress-compress.c @@ -26,7 +26,9 @@ */ #include "xpress.h" +#include "wimlib.h" #include "compress.h" + #include #include @@ -139,17 +141,11 @@ static const struct lz_params xpress_lz_params = { .too_far = 4096, }; -/* - * Performs XPRESS compression on a block of data. - * - * Please see the documentation for the 'compress_func_t' type in write.c for - * the exact behavior of this function and how to call it. - */ -unsigned -xpress_compress(const void *__uncompressed_data, unsigned uncompressed_len, - void *__compressed_data) +/* Documented in wimlib.h */ +WIMLIBAPI unsigned +wimlib_xpress_compress(const void *__uncompressed_data, + unsigned uncompressed_len, void *__compressed_data) { - const u8 *uncompressed_data = __uncompressed_data; u8 *compressed_data = __compressed_data; struct output_bitstream ostream; u32 match_tab[uncompressed_len]; @@ -160,6 +156,10 @@ xpress_compress(const void *__uncompressed_data, unsigned uncompressed_len, unsigned compressed_len; unsigned i; int ret; + u8 uncompressed_data[uncompressed_len + 8]; + + memcpy(uncompressed_data, __uncompressed_data, uncompressed_len); + memset(uncompressed_data + uncompressed_len, 0, 8); wimlib_assert(uncompressed_len <= 32768); @@ -242,8 +242,8 @@ xpress_compress(const void *__uncompressed_data, unsigned uncompressed_len, #ifdef ENABLE_VERIFY_COMPRESSION /* Verify that we really get the same thing back when decompressing. */ u8 buf[uncompressed_len]; - ret = xpress_decompress(__compressed_data, compressed_len, buf, - uncompressed_len); + ret = wimlib_xpress_decompress(__compressed_data, compressed_len, + buf, uncompressed_len); if (ret) { ERROR("xpress_compress(): Failed to decompress data we " "compressed");