Ivana Varekova df1d2d8
diff -up unzip-5.52/inflate.c.pom unzip-5.52/inflate.c
Ivana Varekova df1d2d8
--- unzip-5.52/inflate.c.pom	2005-02-27 07:08:46.000000000 +0100
Ivana Varekova df1d2d8
+++ unzip-5.52/inflate.c	2008-03-19 14:47:58.000000000 +0100
Ivana Varekova df1d2d8
@@ -983,6 +983,7 @@ static int inflate_dynamic(__G)
Ivana Varekova df1d2d8
   unsigned l;           /* last length */
Ivana Varekova df1d2d8
   unsigned m;           /* mask for bit lengths table */
Ivana Varekova df1d2d8
   unsigned n;           /* number of lengths to get */
Ivana Varekova df1d2d8
+  struct huft *tlp;
Ivana Varekova df1d2d8
   struct huft *tl;      /* literal/length code table */
Ivana Varekova df1d2d8
   struct huft *td;      /* distance code table */
Ivana Varekova df1d2d8
   unsigned bl;          /* lookup bits for tl */
Ivana Varekova df1d2d8
@@ -995,6 +996,7 @@ static int inflate_dynamic(__G)
Ivana Varekova df1d2d8
   register unsigned k;  /* number of bits in bit buffer */
Ivana Varekova df1d2d8
   int retval = 0;       /* error code returned: initialized to "no error" */
Ivana Varekova df1d2d8
 
Ivana Varekova df1d2d8
+  td = tlp = tl = (struct huft *)NULL;
Ivana Varekova df1d2d8
 
Ivana Varekova df1d2d8
   /* make local bit buffer */
Ivana Varekova df1d2d8
   Trace((stderr, "\ndynamic block"));
Ivana Varekova df1d2d8
@@ -1047,9 +1049,9 @@ static int inflate_dynamic(__G)
Ivana Varekova df1d2d8
   while (i < n)
Ivana Varekova df1d2d8
   {
Ivana Varekova df1d2d8
     NEEDBITS(bl)
Ivana Varekova df1d2d8
-    j = (td = tl + ((unsigned)b & m))->b;
Ivana Varekova df1d2d8
+    j = (tlp = tl + ((unsigned)b & m))->b;
Ivana Varekova df1d2d8
     DUMPBITS(j)
Ivana Varekova df1d2d8
-    j = td->v.n;
Ivana Varekova df1d2d8
+    j = tlp->v.n;
Ivana Varekova df1d2d8
     if (j < 16)                 /* length of code in bits (0..15) */
Ivana Varekova df1d2d8
       ll[i++] = l = j;          /* save last length in l */
Ivana Varekova df1d2d8
     else if (j == 16)           /* repeat last length 3 to 6 times */
Ivana Varekova df1d2d8
@@ -1149,8 +1151,8 @@ static int inflate_dynamic(__G)
Ivana Varekova df1d2d8
 
Ivana Varekova df1d2d8
 cleanup_and_exit:
Ivana Varekova df1d2d8
   /* free the decoding tables, return */
Ivana Varekova df1d2d8
-  huft_free(tl);
Ivana Varekova df1d2d8
-  huft_free(td);
Ivana Varekova df1d2d8
+  if (tl) huft_free(tl);
Ivana Varekova df1d2d8
+  if (td) huft_free(td);
Ivana Varekova df1d2d8
   return retval;
Ivana Varekova df1d2d8
 }
Ivana Varekova df1d2d8