diff --git a/unlzw.c b/unlzw.c index a330f98..586f913 100644 --- unlzw.c +++ unlzw.c @@ -253,8 +253,14 @@ int unlzw(in, out) for (i = 0 ; i < e ; ++i) { inbuf[i] = inbuf[i+o]; } - insize = e; + + insize = 0; posbits = 0; + if (e >= 0) { + insize = e; + } else { + posbits = abs(e)<<3; + } if (insize < INBUF_EXTRA) { rsize = read_buffer (in, (char *) inbuf + insize, INBUFSIZ);