]> git.cworth.org Git - gzip/blobdiff - unlzh.c
Imported Debian patch 1.3.5-11
[gzip] / unlzh.c
diff --git a/unlzh.c b/unlzh.c
index 7a88fee6294c3fde0b00bbef1c8fe7531481df2f..b1c6ac675a318948b5a5bf82da7dd50c10a083cc 100644 (file)
--- a/unlzh.c
+++ b/unlzh.c
@@ -69,7 +69,11 @@ local void make_table OF((int nchar, uch bitlen[],
 #define NT (CODE_BIT + 3)
 #define PBIT 4  /* smallest integer such that (1U << PBIT) > NP */
 #define TBIT 5  /* smallest integer such that (1U << TBIT) > NT */
-#define NPT (1<<TBIT)
+#if NT > NP
+# define NPT NT
+#else
+# define NPT NP
+#endif
 
 /* local ush left[2 * NC - 1]; */
 /* local ush right[2 * NC - 1]; */
@@ -175,8 +179,6 @@ local void make_table(nchar, bitlen, tablebits, table)
        if ((len = bitlen[ch]) == 0) continue;
        nextcode = start[len] + weight[len];
        if (len <= (unsigned)tablebits) {
-           if (nextcode > 1 << tablebits)
-               error("Bad table\n");
            for (i = start[len]; i < nextcode; i++) table[i] = ch;
        } else {
            k = start[len];
@@ -221,8 +223,6 @@ local void read_pt_len(nn, nbit, i_special)
            if (c == 7) {
                mask = (unsigned) 1 << (BITBUFSIZ - 1 - 3);
                while (mask & bitbuf) {  mask >>= 1;  c++;  }
-               if (c > 16)
-                   error("Bad table\n");
            }
            fillbuf((c < 7) ? 3 : c - 3);
            pt_len[i++] = c;