summaryrefslogtreecommitdiff
path: root/deflate.c
diff options
context:
space:
mode:
authorNathan Moinvaziri <nathan@nathanm.com>2020-06-04 17:30:50 -0700
committerHans Kristian Rosbach <hk-github@circlestorm.org>2020-06-27 16:24:14 +0200
commit0ae7353930b97f16047751e3cb220e4d4ac282d7 (patch)
tree67c6bbcfcbbbcf561274fe6ecbe5dbc4a0293930 /deflate.c
parent712dd227049ea95fc6a43f00daab64c5490e1af2 (diff)
Use local variable to store match_len in deflate_rle.
Diffstat (limited to 'deflate.c')
-rw-r--r--deflate.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/deflate.c b/deflate.c
index 1d1cf5b..89287de 100644
--- a/deflate.c
+++ b/deflate.c
@@ -1554,6 +1554,7 @@ static block_state deflate_rle(deflate_state *s, int flush) {
int bflush = 0; /* set if current block must be flushed */
unsigned int prev; /* byte at distance one to match */
unsigned char *scan, *strend; /* scan goes up to strend for length of run */
+ uint32_t match_len = 0;
for (;;) {
/* Make sure that we always have enough lookahead, except
@@ -1570,7 +1571,6 @@ static block_state deflate_rle(deflate_state *s, int flush) {
}
/* See how many times the previous byte repeats */
- s->match_length = 0;
if (s->lookahead >= MIN_MATCH && s->strstart > 0) {
scan = s->window + s->strstart - 1;
prev = *scan;
@@ -1582,22 +1582,22 @@ static block_state deflate_rle(deflate_state *s, int flush) {
prev == *++scan && prev == *++scan &&
prev == *++scan && prev == *++scan &&
scan < strend);
- s->match_length = MAX_MATCH - (unsigned int)(strend - scan);
- if (s->match_length > s->lookahead)
- s->match_length = s->lookahead;
+ match_len = MAX_MATCH - (unsigned int)(strend - scan);
+ if (match_len > s->lookahead)
+ match_len = s->lookahead;
}
Assert(scan <= s->window+(unsigned int)(s->window_size-1), "wild scan");
}
/* Emit match if have run of MIN_MATCH or longer, else emit literal */
- if (s->match_length >= MIN_MATCH) {
- check_match(s, s->strstart, s->strstart - 1, s->match_length);
+ if (match_len >= MIN_MATCH) {
+ check_match(s, s->strstart, s->strstart - 1, match_len);
- bflush = zng_tr_tally_dist(s, 1, s->match_length - MIN_MATCH);
+ bflush = zng_tr_tally_dist(s, 1, match_len - MIN_MATCH);
- s->lookahead -= s->match_length;
- s->strstart += s->match_length;
- s->match_length = 0;
+ s->lookahead -= match_len;
+ s->strstart += match_len;
+ match_len = 0;
} else {
/* No match, output a literal byte */
bflush = zng_tr_tally_lit(s, s->window[s->strstart]);