Create new allocation for each file
authorRobert Pengelly <robertapengelly@hotmail.com>
Sun, 1 Mar 2026 05:58:49 +0000 (05:58 +0000)
committerRobert Pengelly <robertapengelly@hotmail.com>
Sun, 1 Mar 2026 05:58:49 +0000 (05:58 +0000)
libxz/xz_dec_stream.c
unxz.c

index 38d025ad075ba75149a0441cced016a82c3170d4..5dd264ff10dc74ca87954719059446dad62d152e 100755 (executable)
@@ -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 47d1b1ec0b35d1470452af7b8a51a319b408c976..db980d8270c4f5635dec1a044ed634d267aab177 100755 (executable)
--- 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);
 
 }