summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Andersen2003-11-14 02:44:28 +0000
committerEric Andersen2003-11-14 02:44:28 +0000
commit8211db5af0e99a36a6a4be281c854ad5da56a64f (patch)
tree15554eacc8eb895405dd88cb499103eab492569f
parente0c83af4ce5ead90a3f568c1105859de706b9ecc (diff)
downloadbusybox-8211db5af0e99a36a6a4be281c854ad5da56a64f.zip
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.c5
1 files changed, 1 insertions, 4 deletions
diff --git a/archival/gzip.c b/archival/gzip.c
index bc4c7ba..2be5603 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