diff options
author | Eric Andersen <andersen@codepoet.org> | 2003-11-14 02:44:28 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2003-11-14 02:44:28 +0000 |
commit | 8211db5af0e99a36a6a4be281c854ad5da56a64f (patch) | |
tree | 15554eacc8eb895405dd88cb499103eab492569f | |
parent | e0c83af4ce5ead90a3f568c1105859de706b9ecc (diff) | |
download | busybox-8211db5af0e99a36a6a4be281c854ad5da56a64f.tar.gz |
Vladimir N. Oleynik (vodz) writes:
Hi Glenn.
I analysed BSS size gzip applet and found may be mistake:
updcrc() checking if (crc_table_empty) but not resetted this var.
This do make slow gzip applet ;-)
--w
vodz
-rw-r--r-- | archival/gzip.c | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/archival/gzip.c b/archival/gzip.c index bc4c7badd..2be5603a0 100644 --- a/archival/gzip.c +++ b/archival/gzip.c @@ -305,8 +305,6 @@ DECLARE(ush, d_buf, DIST_BUFSIZE); DECLARE(uch, window, 2L * WSIZE); DECLARE(ush, tab_prefix, 1L << BITS); -static int crc_table_empty = 1; - static int foreground; /* set if program run in foreground */ static int method = DEFLATED; /* compression method */ static int exit_code = OK; /* program exit code */ @@ -387,14 +385,13 @@ static ulg updcrc(uch * s, unsigned n) register ulg c; /* temporary variable */ static unsigned long crc_32_tab[256]; - if (crc_table_empty) { + if (crc_32_tab[1] == 0x00000000L) { unsigned long csr; /* crc shift register */ const unsigned long e = 0xedb88320L; /* polynomial exclusive-or pattern */ int i; /* counter for all possible eight bit values */ int k; /* byte being shifted into crc apparatus */ /* Compute table of CRC's. */ - crc_32_tab[0] = 0x00000000L; for (i = 1; i < 256; i++) { csr = i; /* The idea to initialize the register with the byte instead of |