X-Git-Url: https://wimlib.net/git/?p=wimlib;a=blobdiff_plain;f=src%2Fxpress-compress.c;h=6fb7e1c4846a92db78d9969875b1aa41e35d6b36;hp=b1638877f212f896e2adbad17034c8627c8af441;hb=5ab0691733e0724ba5cd73bd4f9c0963cfe1d276;hpb=e940fda88a92ff9e931ec88fb4c0e1ebd6fa2dfb diff --git a/src/xpress-compress.c b/src/xpress-compress.c index b1638877..6fb7e1c4 100644 --- a/src/xpress-compress.c +++ b/src/xpress-compress.c @@ -38,10 +38,6 @@ #include "wimlib/util.h" #include "wimlib/xpress.h" -#ifdef HAVE_ALLOCA_H -# include -#endif -#include #include struct xpress_record_ctx { @@ -314,7 +310,22 @@ oom: return WIMLIB_ERR_NOMEM; } +static u64 +xpress_get_needed_memory(size_t max_window_size, + const struct wimlib_compressor_params_header *params) +{ + u64 size = 0; + + size += sizeof(struct xpress_compressor); + size += max_window_size + 8; + size += max_window_size * sizeof(((struct xpress_compressor*)0)->matches[0]); + size += max_window_size * sizeof(((struct xpress_compressor*)0)->prev_tab[0]); + + return size; +} + const struct compressor_ops xpress_compressor_ops = { + .get_needed_memory = xpress_get_needed_memory, .create_compressor = xpress_create_compressor, .compress = xpress_compress, .free_compressor = xpress_free_compressor,