aboutsummaryrefslogtreecommitdiff
path: root/archival/gzip.c
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2018-01-31 17:37:32 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2018-01-31 17:37:32 +0100
commit919bc9d43c47a206e632c1b4c80c5f23e307b176 (patch)
tree18729058c9607d5fe2777bcdb5e7d2094b31731c /archival/gzip.c
parentf21ebeece53687b17d64fa444ceb3648439f5a8a (diff)
downloadbusybox-919bc9d43c47a206e632c1b4c80c5f23e307b176.tar.gz
gzip: flush output buffer after stored blocks only if necessary
function old new delta flush_block 671 680 +9 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'archival/gzip.c')
-rw-r--r--archival/gzip.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/archival/gzip.c b/archival/gzip.c
index 7df38c2bc..92130e7fb 100644
--- a/archival/gzip.c
+++ b/archival/gzip.c
@@ -634,7 +634,8 @@ static void copy_block(char *buf, unsigned len, int header)
put_8bit(*buf++);
}
/* The above can 32-bit misalign outbuf */
- flush_outbuf_if_32bit_optimized();
+ if (G1.outcnt & 3) /* syscalls are expensive, is it really misaligned? */
+ flush_outbuf_if_32bit_optimized();
}