From 2de15c85c4bd05258ed3d7e89402e2c4dcc57ae7 Mon Sep 17 00:00:00 2001 From: Robert Pengelly Date: Sun, 1 Mar 2026 05:58:49 +0000 Subject: [PATCH] Create new allocation for each file --- libxz/xz_dec_stream.c | 4 ---- unxz.c | 16 ++++++++-------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/libxz/xz_dec_stream.c b/libxz/xz_dec_stream.c index 38d025a..5dd264f 100755 --- a/libxz/xz_dec_stream.c +++ b/libxz/xz_dec_stream.c @@ -973,10 +973,6 @@ void xz_dec_end (struct xz_dec *s) { if (s) { xz_dec_lzma2_end (s->lzma2); -#ifdef XZ_DEC_BCJ - xz_dec_bcj_end (s->bcj); -#endif - free (s); } diff --git a/unxz.c b/unxz.c index 47d1b1e..db980d8 100755 --- a/unxz.c +++ b/unxz.c @@ -19,12 +19,12 @@ const char *program_name = 0; int main (int argc, char **argv) { struct xz_buf b = { 0 }; - struct xz_dec *s; enum xz_ret ret; int i; FILE *ifp, *ofp; + struct xz_dec *s; const char *ipath; char *opath = 0, *p; @@ -52,10 +52,6 @@ int main (int argc, char **argv) { xz_crc32_init (); xz_crc64_init (); - if (!(s = xz_dec_init (XZ_DYNALLOC, (uint32_t) -1))) { - return -1; - } - b.out_size = XZ_IOBUF_SIZE; if (!(b.out = malloc (b.out_size))) { @@ -68,6 +64,10 @@ int main (int argc, char **argv) { for (i = 0; i < state->nb_files; i++) { + if (!(s = xz_dec_init (XZ_DYNALLOC, (uint32_t) -1))) { + continue; + } + b.out_pos = 0; b.in_pos = 0; @@ -164,6 +164,8 @@ int main (int argc, char **argv) { } + xz_dec_end (s); + fclose (ifp); fclose (ofp); @@ -171,9 +173,7 @@ int main (int argc, char **argv) { } - xz_dec_end (s); free (b.in); - - return (get_error_count () ? EXIT_FAILURE : EXIT_SUCCESS); + return (get_error_count () ? EXIT_FAILURE : EXIT_SUCCESS); } -- 2.34.1