From f86ede22500f7ae024ec3ec3f3489ab5a857a3b3 Mon Sep 17 00:00:00 2001 From: Jia Tan Date: Wed, 10 May 2023 22:38:59 +0800 Subject: [PATCH] xz: Free filters[] in debug mode. This will only free filter chains created with --filters1-9 since the default filter chain may be set from a static function variable. The complexity to free the default filter chain is not worth the burden on code maintenance. --- src/xz/coder.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/xz/coder.c b/src/xz/coder.c index 476a5606..55e59c48 100644 --- a/src/xz/coder.c +++ b/src/xz/coder.c @@ -1245,6 +1245,16 @@ coder_run(const char *filename) extern void coder_free(void) { + // Free starting from the second filter chain since the default + // filter chain may have its options set from a static variable + // in coder_set_compression_settings(). Since this is only run in + // debug mode and will be freed when the process ends anyway, we + // don't worry about freeing it. + for (uint32_t i = 1; i < ARRAY_SIZE(filters); i++) { + if (filters_init_mask & (1 << i)) + lzma_filters_free(filters[i], NULL); + } + lzma_end(&strm); return; }