diff options
| author | Tim J. Robbins <tjr@FreeBSD.org> | 2004-06-30 23:54:46 +0000 | 
|---|---|---|
| committer | Tim J. Robbins <tjr@FreeBSD.org> | 2004-06-30 23:54:46 +0000 | 
| commit | 0b73a4c3010d9d6ae8d78f9fb1ae42fa5789dcad (patch) | |
| tree | de1d43b9c6f17b0eac60ab29d51d8339ed949c0b /lib/libz/trees.c | |
| parent | 1fa1f918ab7eb357889a41fafdf093d8745cdf1b (diff) | |
Notes
Diffstat (limited to 'lib/libz/trees.c')
| -rw-r--r-- | lib/libz/trees.c | 87 | 
1 files changed, 44 insertions, 43 deletions
diff --git a/lib/libz/trees.c b/lib/libz/trees.c index dd2a3a0cba8c..3f8289f10837 100644 --- a/lib/libz/trees.c +++ b/lib/libz/trees.c @@ -1,6 +1,6 @@  /* trees.c -- output deflated data using Huffman coding - * Copyright (C) 1995-2002 Jean-loup Gailly - * For conditions of distribution and use, see copyright notice in zlib.h  + * Copyright (C) 1995-2003 Jean-loup Gailly + * For conditions of distribution and use, see copyright notice in zlib.h   */  /* @@ -231,7 +231,6 @@ local void send_bits(s, value, length)  #endif /* DEBUG */ -#define MAX(a,b) (a >= b ? a : b)  /* the arguments must not have side effects */  /* =========================================================================== @@ -336,42 +335,42 @@ void gen_trees_header()      Assert (header != NULL, "Can't open trees.h");      fprintf(header, -	    "/* header created automatically with -DGEN_TREES_H */\n\n"); +            "/* header created automatically with -DGEN_TREES_H */\n\n");      fprintf(header, "local const ct_data static_ltree[L_CODES+2] = {\n");      for (i = 0; i < L_CODES+2; i++) { -	fprintf(header, "{{%3u},{%3u}}%s", static_ltree[i].Code, -		static_ltree[i].Len, SEPARATOR(i, L_CODES+1, 5)); +        fprintf(header, "{{%3u},{%3u}}%s", static_ltree[i].Code, +                static_ltree[i].Len, SEPARATOR(i, L_CODES+1, 5));      }      fprintf(header, "local const ct_data static_dtree[D_CODES] = {\n");      for (i = 0; i < D_CODES; i++) { -	fprintf(header, "{{%2u},{%2u}}%s", static_dtree[i].Code, -		static_dtree[i].Len, SEPARATOR(i, D_CODES-1, 5)); +        fprintf(header, "{{%2u},{%2u}}%s", static_dtree[i].Code, +                static_dtree[i].Len, SEPARATOR(i, D_CODES-1, 5));      }      fprintf(header, "const uch _dist_code[DIST_CODE_LEN] = {\n");      for (i = 0; i < DIST_CODE_LEN; i++) { -	fprintf(header, "%2u%s", _dist_code[i], -		SEPARATOR(i, DIST_CODE_LEN-1, 20)); +        fprintf(header, "%2u%s", _dist_code[i], +                SEPARATOR(i, DIST_CODE_LEN-1, 20));      }      fprintf(header, "const uch _length_code[MAX_MATCH-MIN_MATCH+1]= {\n");      for (i = 0; i < MAX_MATCH-MIN_MATCH+1; i++) { -	fprintf(header, "%2u%s", _length_code[i], -		SEPARATOR(i, MAX_MATCH-MIN_MATCH, 20)); +        fprintf(header, "%2u%s", _length_code[i], +                SEPARATOR(i, MAX_MATCH-MIN_MATCH, 20));      }      fprintf(header, "local const int base_length[LENGTH_CODES] = {\n");      for (i = 0; i < LENGTH_CODES; i++) { -	fprintf(header, "%1u%s", base_length[i], -		SEPARATOR(i, LENGTH_CODES-1, 20)); +        fprintf(header, "%1u%s", base_length[i], +                SEPARATOR(i, LENGTH_CODES-1, 20));      }      fprintf(header, "local const int base_dist[D_CODES] = {\n");      for (i = 0; i < D_CODES; i++) { -	fprintf(header, "%5u%s", base_dist[i], -		SEPARATOR(i, D_CODES-1, 10)); +        fprintf(header, "%5u%s", base_dist[i], +                SEPARATOR(i, D_CODES-1, 10));      }      fclose(header); @@ -676,7 +675,8 @@ local void build_tree(s, desc)          /* Create a new node father of n and m */          tree[node].Freq = tree[n].Freq + tree[m].Freq; -        s->depth[node] = (uch) (MAX(s->depth[n], s->depth[m]) + 1); +        s->depth[node] = (uch)((s->depth[n] >= s->depth[m] ? +                                s->depth[n] : s->depth[m]) + 1);          tree[n].Dad = tree[m].Dad = (ush)node;  #ifdef DUMP_BL_TREE          if (tree == s->bl_tree) { @@ -931,39 +931,39 @@ void _tr_flush_block(s, buf, stored_len, eof)      /* Build the Huffman trees unless a stored block is forced */      if (s->level > 0) { -	 /* Check if the file is ascii or binary */ -	if (s->data_type == Z_UNKNOWN) set_data_type(s); +         /* Check if the file is ascii or binary */ +        if (s->data_type == Z_UNKNOWN) set_data_type(s); -	/* Construct the literal and distance trees */ -	build_tree(s, (tree_desc *)(&(s->l_desc))); -	Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len, -		s->static_len)); +        /* Construct the literal and distance trees */ +        build_tree(s, (tree_desc *)(&(s->l_desc))); +        Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len, +                s->static_len)); -	build_tree(s, (tree_desc *)(&(s->d_desc))); -	Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len, -		s->static_len)); -	/* At this point, opt_len and static_len are the total bit lengths of -	 * the compressed block data, excluding the tree representations. -	 */ +        build_tree(s, (tree_desc *)(&(s->d_desc))); +        Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len, +                s->static_len)); +        /* At this point, opt_len and static_len are the total bit lengths of +         * the compressed block data, excluding the tree representations. +         */ -	/* Build the bit length tree for the above two trees, and get the index -	 * in bl_order of the last bit length code to send. -	 */ -	max_blindex = build_bl_tree(s); +        /* Build the bit length tree for the above two trees, and get the index +         * in bl_order of the last bit length code to send. +         */ +        max_blindex = build_bl_tree(s); -	/* Determine the best encoding. Compute first the block length in bytes*/ -	opt_lenb = (s->opt_len+3+7)>>3; -	static_lenb = (s->static_len+3+7)>>3; +        /* Determine the best encoding. Compute the block lengths in bytes. */ +        opt_lenb = (s->opt_len+3+7)>>3; +        static_lenb = (s->static_len+3+7)>>3; -	Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ", -		opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len, -		s->last_lit)); +        Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ", +                opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len, +                s->last_lit)); -	if (static_lenb <= opt_lenb) opt_lenb = static_lenb; +        if (static_lenb <= opt_lenb) opt_lenb = static_lenb;      } else {          Assert(buf != (char*)0, "lost buf"); -	opt_lenb = static_lenb = stored_len + 5; /* force a stored block */ +        opt_lenb = static_lenb = stored_len + 5; /* force a stored block */      }  #ifdef FORCE_STORED @@ -1108,7 +1108,8 @@ local void compress_block(s, ltree, dtree)          } /* literal or match pair ? */          /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */ -        Assert(s->pending < s->lit_bufsize + 2*lx, "pendingBuf overflow"); +        Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx, +               "pendingBuf overflow");      } while (lx < s->last_lit); @@ -1200,7 +1201,7 @@ local void copy_block(s, buf, len, header)      s->last_eob_len = 8; /* enough lookahead for inflate */      if (header) { -        put_short(s, (ush)len);    +        put_short(s, (ush)len);          put_short(s, (ush)~len);  #ifdef DEBUG          s->bits_sent += 2*16;  | 
