/* deflate.c -- compress data using the deflation algorithm
- Copyright (C) 1999, 2006, 2009-2011 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2006, 2009-2014 Free Software Foundation, Inc.
Copyright (C) 1992-1993 Jean-loup Gailly
This program is free software; you can redistribute it and/or modify
/* DECLARE(Pos, head, 1<<HASH_BITS); */
/* Heads of the hash chains or NIL. */
-ulg window_size = (ulg)2*WSIZE;
+static ulg window_size = (ulg)2*WSIZE;
/* window size, 2*WSIZE except for MMAP or BIG_MEM, where it is the
* input file length plus MIN_LOOKAHEAD.
*/
* H_SHIFT * MIN_MATCH >= HASH_BITS
*/
-unsigned int near prev_length;
+ unsigned int near prev_length;
/* Length of the best match at previous step. Matches not greater than this
* are discarded. This is used in the lazy match evaluation.
*/
local int eofile; /* flag set at end of input file */
local unsigned lookahead; /* number of valid bytes ahead in window */
-unsigned near max_chain_length;
+ unsigned max_chain_length;
/* To speed up deflation, hash chains are never searched beyond this length.
* A higher limit improves compression ratio but degrades the speed.
*/
local int compr_level;
/* compression level (1..9) */
-unsigned near good_match;
+unsigned good_match;
/* Use a faster search when the previous match is longer than this */
ush max_chain;
} config;
+#ifdef ASMV
+# define static_unless_ASMV
+#else
+# define static_unless_ASMV static
+#endif
+
#ifdef FULL_SEARCH
# define nice_match MAX_MATCH
#else
- int near nice_match; /* Stop searching when current match exceeds this */
+ /* Stop searching when current match exceeds this */
+ static_unless_ASMV int nice_match;
#endif
local config configuration_table[10] = {
n = read_buf((char*)window+strstart+lookahead, more);
if (n == 0 || n == (unsigned)EOF) {
eofile = 1;
+ /* Don't let garbage pollute the dictionary. */
+ memzero (window + strstart + lookahead, MIN_MATCH - 1);
} else {
lookahead += n;
}