From: Denys Vlasenko Date: Wed, 31 Jan 2018 15:36:17 +0000 (+0100) Subject: gzip: code shrink X-Git-Tag: 1_29_0~314 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=26eea71c87bb5b39fb77eb8b1a6c69ea82e8e879;p=oweals%2Fbusybox.git gzip: code shrink function old new delta flush_block 668 665 -3 Signed-off-by: Denys Vlasenko --- diff --git a/archival/gzip.c b/archival/gzip.c index 9dc31e30b..c94fec48d 100644 --- a/archival/gzip.c +++ b/archival/gzip.c @@ -617,8 +617,8 @@ static void copy_block(char *buf, unsigned len, int header) bi_windup(); /* align on byte boundary */ if (header) { - put_16bit(len); - put_16bit(~len); + unsigned v = ((uint16_t)len) | ((~len) << 16); + put_32bit(v); #ifdef DEBUG G1.bits_sent += 2 * 16; #endif @@ -1747,8 +1747,8 @@ static ulg flush_block(char *buf, ulg stored_len, int eof) if (buf == NULL) bb_error_msg("block vanished"); - copy_block(buf, (unsigned) stored_len, 0); /* without header */ G2.compressed_len = stored_len << 3; + copy_block(buf, (unsigned) stored_len, 0); /* without header */ } else if (stored_len + 4 <= opt_lenb && buf != NULL) { /* 4: two words for the lengths */ /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE. @@ -1758,9 +1758,8 @@ static ulg flush_block(char *buf, ulg stored_len, int eof) * transform a block into a stored block. */ send_bits((STORED_BLOCK << 1) + eof, 3); /* send block type */ - G2.compressed_len = (G2.compressed_len + 3 + 7) & ~7L; - G2.compressed_len += (stored_len + 4) << 3; - + G2.compressed_len = ((G2.compressed_len + 3 + 7) & ~7L) + + ((stored_len + 4) << 3); copy_block(buf, (unsigned) stored_len, 1); /* with header */ } else if (static_lenb == opt_lenb) { send_bits((STATIC_TREES << 1) + eof, 3);