diff options
author | Rob Landley <rob@landley.net> | 2019-04-22 17:34:09 -0500 |
---|---|---|
committer | Rob Landley <rob@landley.net> | 2019-04-22 17:34:09 -0500 |
commit | 05444e4ae675d9caa082f9ccec7270f8389893b1 (patch) | |
tree | 4707563f93e3d5391e837b447028ddcebb51ad4d /lib | |
parent | dfe7cbc62e0645d2beb1147facdee6f95c75c31d (diff) | |
download | toybox-05444e4ae675d9caa082f9ccec7270f8389893b1.tar.gz |
struct deflate no longer lives in TT so must be explicitly zeroed, and use
libbuf instead of toybuf in lib/
Diffstat (limited to 'lib')
-rw-r--r-- | lib/deflate.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/lib/deflate.c b/lib/deflate.c index 2a6274e7..eebcd3de 100644 --- a/lib/deflate.c +++ b/lib/deflate.c @@ -232,7 +232,7 @@ static void inflate(struct deflate *dd, struct bitbuf *bb) // Dynamic huffman codes? if (type == 2) { - struct huff *h2 = ((struct huff *)toybuf)+1; + struct huff *h2 = ((struct huff *)libbuf)+1; int i, litlen, distlen, hufflen; char *hufflen_order = "\x10\x11\x12\0\x08\x07\x09\x06\x0a\x05\x0b" "\x04\x0c\x03\x0d\x02\x0e\x01\x0f", *bits; @@ -246,7 +246,7 @@ static void inflate(struct deflate *dd, struct bitbuf *bb) // a complicated way: an array of bit lengths (hufflen many // entries, each 3 bits) is used to fill out an array of 19 entries // in a magic order, leaving the rest 0. Then make a tree out of it: - memset(bits = toybuf+1, 0, 19); + memset(bits = libbuf+1, 0, 19); for (i=0; i<hufflen; i++) bits[hufflen_order[i]] = bitbuf_get(bb, 3); len2huff(h2, bits, 19); @@ -268,7 +268,7 @@ static void inflate(struct deflate *dd, struct bitbuf *bb) if (i > litlen+distlen) error_exit("bad tree"); len2huff(lithuff = h2, bits, litlen); - len2huff(disthuff = ((struct huff *)toybuf)+2, bits+litlen, distlen); + len2huff(disthuff = ((struct huff *)libbuf)+2, bits+litlen, distlen); // Static huffman codes } else { @@ -354,7 +354,7 @@ static struct deflate *init_deflate(int compress) int i, n = 1; struct deflate *dd = xmalloc(sizeof(struct deflate)+32768*(compress ? 4 : 1)); -// TODO sizeof and order of these? + memset(dd, 0, sizeof(struct deflate)); // decompress needs 32k history, compress adds 64k hashhead and 32k hashchain if (compress) { dd->hashhead = (unsigned short *)(dd->data+65536); @@ -384,10 +384,10 @@ static struct deflate *init_deflate(int compress) // TODO layout and lifetime of this? // Init fixed huffman tables - for (i=0; i<288; i++) toybuf[i] = 8 + (i>143) - ((i>255)<<1) + (i>279); - len2huff(dd->fixlithuff = ((struct huff *)toybuf)+3, toybuf, 288); - memset(toybuf, 5, 30); - len2huff(dd->fixdisthuff = ((struct huff *)toybuf)+4, toybuf, 30); + for (i=0; i<288; i++) libbuf[i] = 8 + (i>143) - ((i>255)<<1) + (i>279); + len2huff(dd->fixlithuff = ((struct huff *)libbuf)+3, libbuf, 288); + memset(libbuf, 5, 30); + len2huff(dd->fixdisthuff = ((struct huff *)libbuf)+4, libbuf, 30); return dd; } |