Passed
Push — master ( 3e0ba1...df5150 )
by El
20:25 queued 10:25
created

js/rawinflate-0.3.js (106 issues)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
/*
2
 * $Id: rawinflate.js,v 0.3 2013/04/09 14:25:38 dankogai Exp dankogai $
3
 *
4
 * GNU General Public License, version 2 (GPL-2.0)
5
 *   http://opensource.org/licenses/GPL-2.0
6
 * original:
7
 *   http://www.onicos.com/staff/iz/amuse/javascript/expert/inflate.txt
8
 */
9
10
(function(ctx){
11
12
/* Copyright (C) 1999 Masanao Izumo <[email protected]>
13
 * Version: 1.0.0.1
14
 * LastModified: Dec 25 1999
15
 */
16
17
/* Interface:
18
 * data = zip_inflate(src);
19
 */
20
21
/* constant parameters */
22
var zip_WSIZE = 32768;		// Sliding Window size
23
var zip_STORED_BLOCK = 0;
24
var zip_STATIC_TREES = 1;
0 ignored issues
show
The variable zip_STATIC_TREES seems to be never used. Consider removing it.
Loading history...
25
var zip_DYN_TREES    = 2;
0 ignored issues
show
The variable zip_DYN_TREES seems to be never used. Consider removing it.
Loading history...
26
27
/* for inflate */
28
var zip_lbits = 9; 		// bits in base literal/length lookup table
29
var zip_dbits = 6; 		// bits in base distance lookup table
30
var zip_INBUFSIZ = 32768;	// Input buffer size
0 ignored issues
show
The variable zip_INBUFSIZ seems to be never used. Consider removing it.
Loading history...
31
var zip_INBUF_EXTRA = 64;	// Extra buffer
0 ignored issues
show
The variable zip_INBUF_EXTRA seems to be never used. Consider removing it.
Loading history...
32
33
/* variables (inflate) */
34
var zip_slide;
35
var zip_wp;			// current position in slide
36
var zip_fixed_tl = null;	// inflate static
37
var zip_fixed_td;		// inflate static
38
var zip_fixed_bl, fixed_bd;	// inflate static
0 ignored issues
show
The variable fixed_bd seems to be never used. Consider removing it.
Loading history...
39
var zip_bit_buf;		// bit buffer
40
var zip_bit_len;		// bits in bit buffer
41
var zip_method;
42
var zip_eof;
43
var zip_copy_leng;
44
var zip_copy_dist;
45
var zip_tl, zip_td;	// literal/length and distance decoder tables
46
var zip_bl, zip_bd;	// number of bits decoded by tl and td
47
48
var zip_inflate_data;
49
var zip_inflate_pos;
50
51
52
/* constant tables (inflate) */
53
var zip_MASK_BITS = new Array(
0 ignored issues
show
Coding Style Best Practice introduced by
Using the Array constructor is generally discouraged. Consider using an array literal instead.
Loading history...
54
    0x0000,
55
    0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff,
56
    0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff);
57
// Tables for deflate from PKZIP's appnote.txt.
58
var zip_cplens = new Array( // Copy lengths for literal codes 257..285
0 ignored issues
show
Coding Style Best Practice introduced by
Using the Array constructor is generally discouraged. Consider using an array literal instead.
Loading history...
59
    3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,
60
    35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0);
61
/* note: see note #13 above about the 258 in this list. */
62
var zip_cplext = new Array( // Extra bits for literal codes 257..285
0 ignored issues
show
Coding Style Best Practice introduced by
Using the Array constructor is generally discouraged. Consider using an array literal instead.
Loading history...
63
    0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2,
64
    3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 99, 99); // 99==invalid
65
var zip_cpdist = new Array( // Copy offsets for distance codes 0..29
0 ignored issues
show
Coding Style Best Practice introduced by
Using the Array constructor is generally discouraged. Consider using an array literal instead.
Loading history...
66
    1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
67
    257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
68
    8193, 12289, 16385, 24577);
69
var zip_cpdext = new Array( // Extra bits for distance codes
0 ignored issues
show
Coding Style Best Practice introduced by
Using the Array constructor is generally discouraged. Consider using an array literal instead.
Loading history...
70
    0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6,
71
    7, 7, 8, 8, 9, 9, 10, 10, 11, 11,
72
    12, 12, 13, 13);
73
var zip_border = new Array(  // Order of the bit length code lengths
0 ignored issues
show
Coding Style Best Practice introduced by
Using the Array constructor is generally discouraged. Consider using an array literal instead.
Loading history...
74
    16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15);
75
/* objects (inflate) */
76
77
var zip_HuftList = function() {
78
    this.next = null;
79
    this.list = null;
80
}
81
82
var zip_HuftNode = function() {
83
    this.e = 0; // number of extra bits or operation
84
    this.b = 0; // number of bits in this code or subcode
85
86
    // union
87
    this.n = 0; // literal, length base, or distance base
88
    this.t = null; // (zip_HuftNode) pointer to next level of table
89
}
90
91
var zip_HuftBuild = function(b,	// code lengths in bits (all assumed <= BMAX)
92
		       n,	// number of codes (assumed <= N_MAX)
93
		       s,	// number of simple-valued codes (0..s-1)
94
		       d,	// list of base values for non-simple codes
95
		       e,	// list of extra bits for non-simple codes
96
		       mm	// maximum lookup bits
97
		   ) {
98
    this.BMAX = 16;   // maximum bit length of any code
99
    this.N_MAX = 288; // maximum number of codes in any set
100
    this.status = 0;	// 0: success, 1: incomplete table, 2: bad input
101
    this.root = null;	// (zip_HuftList) starting table
102
    this.m = 0;		// maximum lookup bits, returns actual
103
104
/* Given a list of code lengths and a maximum table size, make a set of
105
   tables to decode that set of codes.	Return zero on success, one if
106
   the given code set is incomplete (the tables are still built in this
107
   case), two if the input is invalid (all zero length codes or an
108
   oversubscribed set of lengths), and three if not enough memory.
109
   The code with value 256 is special, and the tables are constructed
110
   so that no bits beyond that code are fetched when that code is
111
   decoded. */
112
    {
113
	var a;			// counter for codes of length k
114
	var c = new Array(this.BMAX+1);	// bit length count table
115
	var el;			// length of EOB code (value 256)
116
	var f;			// i repeats in table every f entries
117
	var g;			// maximum code length
118
	var h;			// table level
119
	var i;			// counter, current code
120
	var j;			// counter
121
	var k;			// number of bits in current code
122
	var lx = new Array(this.BMAX+1);	// stack of bits per table
123
	var p;			// pointer into c[], b[], or v[]
124
	var pidx;		// index of p
125
	var q;			// (zip_HuftNode) points to current table
126
	var r = new zip_HuftNode(); // table entry for structure assignment
0 ignored issues
show
Coding Style Best Practice introduced by
By convention, constructors like zip_HuftNode should be capitalized.
Loading history...
127
	var u = new Array(this.BMAX); // zip_HuftNode[BMAX][]  table stack
0 ignored issues
show
Coding Style Best Practice introduced by
Using the Array constructor is generally discouraged. Consider using an array literal instead.
Loading history...
128
	var v = new Array(this.N_MAX); // values in order of bit length
0 ignored issues
show
Coding Style Best Practice introduced by
Using the Array constructor is generally discouraged. Consider using an array literal instead.
Loading history...
129
	var w;
130
	var x = new Array(this.BMAX+1);// bit offsets, then code stack
131
	var xp;			// pointer into x or c
132
	var y;			// number of dummy codes added
133
	var z;			// number of entries in current table
134
	var o;
135
	var tail;		// (zip_HuftList)
136
137
	tail = this.root = null;
138
	for(i = 0; i < c.length; i++)
139
	    c[i] = 0;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
140
	for(i = 0; i < lx.length; i++)
141
	    lx[i] = 0;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
142
	for(i = 0; i < u.length; i++)
143
	    u[i] = null;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
144
	for(i = 0; i < v.length; i++)
145
	    v[i] = 0;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
146
	for(i = 0; i < x.length; i++)
147
	    x[i] = 0;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
148
149
	// Generate counts for each bit length
150
	el = n > 256 ? b[256] : this.BMAX; // set length of EOB code, if any
151
	p = b; pidx = 0;
152
	i = n;
0 ignored issues
show
Complexity Coding Style introduced by
You seem to be assigning a new value to the loop variable i here. Please check if this was indeed your intention. Even if it was, consider using another kind of loop instead.
Loading history...
153
	do {
154
	    c[p[pidx]]++;	// assume all entries <= BMAX
155
	    pidx++;
156
	} while(--i > 0);
157
	if(c[0] == n) {	// null input--all zero length codes
158
	    this.root = null;
159
	    this.m = 0;
160
	    this.status = 0;
161
	    return;
162
	}
163
164
	// Find minimum and maximum length, bound *m by those
165
	for(j = 1; j <= this.BMAX; j++)
166
	    if(c[j] != 0)
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
167
		break;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
168
	k = j;			// minimum code length
169
	if(mm < j)
170
	    mm = j;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
171
	for(i = this.BMAX; i != 0; i--)
172
	    if(c[i] != 0)
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
173
		break;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
174
	g = i;			// maximum code length
175
	if(mm > i)
176
	    mm = i;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
177
178
	// Adjust last length count to fill out codes, if needed
179
	for(y = 1 << j; j < i; j++, y <<= 1)
180
	    if((y -= c[j]) < 0) {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
181
		this.status = 2;	// bad input: more codes than bits
182
		this.m = mm;
183
		return;
184
	    }
185
	if((y -= c[i]) < 0) {
186
	    this.status = 2;
187
	    this.m = mm;
188
	    return;
189
	}
190
	c[i] += y;
191
192
	// Generate starting offsets into the value table for each length
193
	x[1] = j = 0;
0 ignored issues
show
Complexity Coding Style introduced by
You seem to be assigning a new value to the loop variable j here. Please check if this was indeed your intention. Even if it was, consider using another kind of loop instead.
Loading history...
194
	p = c;
195
	pidx = 1;
196
	xp = 2;
197
	while(--i > 0)		// note that i == g from above
198
	    x[xp++] = (j += p[pidx++]);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
199
200
	// Make a table of values in order of bit lengths
201
	p = b; pidx = 0;
202
	i = 0;
203
	do {
204
	    if((j = p[pidx++]) != 0)
205
		v[x[j]++] = i;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
206
	} while(++i < n);
207
	n = x[g];			// set n to length of v
208
209
	// Generate the Huffman codes and for each, make the table entries
210
	x[0] = i = 0;		// first Huffman code is zero
211
	p = v; pidx = 0;		// grab values in bit order
212
	h = -1;			// no tables yet--level -1
213
	w = lx[0] = 0;		// no bits decoded yet
214
	q = null;			// ditto
215
	z = 0;			// ditto
216
217
	// go through the bit lengths (k already is bits in shortest code)
218
	for(; k <= g; k++) {
219
	    a = c[k];
220
	    while(a-- > 0) {
221
		// here i is the Huffman code of length k bits for value p[pidx]
222
		// make tables up to required level
223
		while(k > w + lx[1 + h]) {
224
		    w += lx[1 + h]; // add bits already decoded
225
		    h++;
226
227
		    // compute minimum size table less than or equal to *m bits
228
		    z = (z = g - w) > mm ? mm : z; // upper limit
229
		    if((f = 1 << (j = k - w)) > a + 1) { // try a k-w bit table
230
			// too few codes for k-w bit table
231
			f -= a + 1;	// deduct codes from patterns left
232
			xp = k;
233
			while(++j < z) { // try smaller tables up to z bits
234
			    if((f <<= 1) <= c[++xp])
235
				break;	// enough codes to use up j bits
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
236
			    f -= c[xp];	// else deduct codes from patterns
237
			}
238
		    }
239
		    if(w + j > el && w < el)
240
			j = el - w;	// make EOB code end at table
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
241
		    z = 1 << j;	// table entries for j-bit table
242
		    lx[1 + h] = j; // set table size in stack
243
244
		    // allocate and link in new table
245
		    q = new Array(z);
246
		    for(o = 0; o < z; o++) {
247
			q[o] = new zip_HuftNode();
0 ignored issues
show
Coding Style Best Practice introduced by
By convention, constructors like zip_HuftNode should be capitalized.
Loading history...
248
		    }
249
250
		    if(tail == null)
251
			tail = this.root = new zip_HuftList();
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Coding Style Best Practice introduced by
By convention, constructors like zip_HuftList should be capitalized.
Loading history...
252
		    else
253
			tail = tail.next = new zip_HuftList();
0 ignored issues
show
Coding Style Best Practice introduced by
By convention, constructors like zip_HuftList should be capitalized.
Loading history...
254
		    tail.next = null;
255
		    tail.list = q;
256
		    u[h] = q;	// table starts after link
257
258
		    /* connect to last table, if there is one */
259
		    if(h > 0) {
260
			x[h] = i;		// save pattern for backing up
261
			r.b = lx[h];	// bits to dump before this table
262
			r.e = 16 + j;	// bits in this table
263
			r.t = q;		// pointer to this table
264
			j = (i & ((1 << w) - 1)) >> (w - lx[h]);
265
			u[h-1][j].e = r.e;
266
			u[h-1][j].b = r.b;
267
			u[h-1][j].n = r.n;
268
			u[h-1][j].t = r.t;
269
		    }
270
		}
271
272
		// set up table entry in r
273
		r.b = k - w;
274
		if(pidx >= n)
275
		    r.e = 99;		// out of values--invalid code
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
276
		else if(p[pidx] < s) {
277
		    r.e = (p[pidx] < 256 ? 16 : 15); // 256 is end-of-block code
278
		    r.n = p[pidx++];	// simple code is just the value
279
		} else {
280
		    r.e = e[p[pidx] - s];	// non-simple--look up in lists
281
		    r.n = d[p[pidx++] - s];
282
		}
283
284
		// fill code-like entries with r //
285
		f = 1 << (k - w);
286
		for(j = i >> w; j < z; j += f) {
287
		    q[j].e = r.e;
288
		    q[j].b = r.b;
289
		    q[j].n = r.n;
290
		    q[j].t = r.t;
291
		}
292
293
		// backwards increment the k-bit code i
294
		for(j = 1 << (k - 1); (i & j) != 0; j >>= 1)
295
		    i ^= j;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
296
		i ^= j;
297
298
		// backup over finished tables
299
		while((i & ((1 << w) - 1)) != x[h]) {
300
		    w -= lx[h];		// don't need to update q
301
		    h--;
302
		}
303
	    }
304
	}
305
306
	/* return actual size of base table */
307
	this.m = lx[1];
308
309
	/* Return true (1) if we were given an incomplete table */
310
	this.status = ((y != 0 && g != 1) ? 1 : 0);
311
    } /* end of constructor */
312
}
313
314
315
/* routines (inflate) */
316
317
var zip_GET_BYTE = function() {
318
    if(zip_inflate_data.length == zip_inflate_pos)
319
	return -1;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
320
    return zip_inflate_data.charCodeAt(zip_inflate_pos++) & 0xff;
321
}
322
323
var zip_NEEDBITS = function(n) {
324
    while(zip_bit_len < n) {
0 ignored issues
show
Comprehensibility Bug introduced by
The variable zip_bit_len does not seem to be initialized in case the while loop on line 324 is not entered. Are you sure this can never be the case?
Loading history...
325
	zip_bit_buf |= zip_GET_BYTE() << zip_bit_len;
0 ignored issues
show
Comprehensibility Bug introduced by
The variable zip_bit_buf does not seem to be initialized in case the while loop on line 324 is not entered. Are you sure this can never be the case?
Loading history...
326
	zip_bit_len += 8;
327
    }
328
}
329
330
var zip_GETBITS = function(n) {
331
    return zip_bit_buf & zip_MASK_BITS[n];
332
}
333
334
var zip_DUMPBITS = function(n) {
335
    zip_bit_buf >>= n;
336
    zip_bit_len -= n;
337
}
338
339
var zip_inflate_codes = function(buff, off, size) {
340
    /* inflate (decompress) the codes in a deflated (compressed) block.
341
       Return an error code or zero if it all goes ok. */
342
    var e;		// table entry flag/number of extra bits
343
    var t;		// (zip_HuftNode) pointer to table entry
344
    var n;
345
346
    if(size == 0)
347
      return 0;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
348
349
    // inflate the coded data
350
    n = 0;
351
    for(;;) {			// do until end of block
352
	zip_NEEDBITS(zip_bl);
353
	t = zip_tl.list[zip_GETBITS(zip_bl)];
354
	e = t.e;
355
	while(e > 16) {
356
	    if(e == 99)
357
		return -1;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
358
	    zip_DUMPBITS(t.b);
359
	    e -= 16;
360
	    zip_NEEDBITS(e);
361
	    t = t.t[zip_GETBITS(e)];
362
	    e = t.e;
363
	}
364
	zip_DUMPBITS(t.b);
365
366
	if(e == 16) {		// then it's a literal
367
	    zip_wp &= zip_WSIZE - 1;
0 ignored issues
show
The variable zip_wp seems to not be initialized for all possible execution paths.
Loading history...
368
	    buff[off + n++] = zip_slide[zip_wp++] = t.n;
0 ignored issues
show
The variable zip_wp is changed as part of the for loop for example by zip_WSIZE - 1 on line 367. Only the value of the last iteration will be visible in this function if it is called after the loop.
Loading history...
369
	    if(n == size)
370
		return size;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
371
	    continue;
372
	}
373
374
	// exit if end of block
375
	if(e == 15)
376
	    break;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
377
378
	// it's an EOB or a length
379
380
	// get length of block to copy
381
	zip_NEEDBITS(e);
382
	zip_copy_leng = t.n + zip_GETBITS(e);
383
	zip_DUMPBITS(e);
384
385
	// decode distance of block to copy
386
	zip_NEEDBITS(zip_bd);
387
	t = zip_td.list[zip_GETBITS(zip_bd)];
388
	e = t.e;
389
390
	while(e > 16) {
391
	    if(e == 99)
392
		return -1;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
393
	    zip_DUMPBITS(t.b);
394
	    e -= 16;
395
	    zip_NEEDBITS(e);
396
	    t = t.t[zip_GETBITS(e)];
397
	    e = t.e;
398
	}
399
	zip_DUMPBITS(t.b);
400
	zip_NEEDBITS(e);
401
	zip_copy_dist = zip_wp - t.n - zip_GETBITS(e);
402
	zip_DUMPBITS(e);
403
404
	// do the copy
405
	while(zip_copy_leng > 0 && n < size) {
0 ignored issues
show
The variable zip_copy_leng is changed as part of the while loop for example by zip_copy_leng-- on line 406. Only the value of the last iteration will be visible in this function if it is called after the loop.
Loading history...
406
	    zip_copy_leng--;
407
	    zip_copy_dist &= zip_WSIZE - 1;
0 ignored issues
show
The variable zip_copy_dist is changed as part of the while loop for example by zip_copy_dist++ on line 410. Only the value of the last iteration will be visible in this function if it is called after the loop.
Loading history...
408
	    zip_wp &= zip_WSIZE - 1;
409
	    buff[off + n++] = zip_slide[zip_wp++]
410
		= zip_slide[zip_copy_dist++];
411
	}
412
413
	if(n == size)
414
	    return size;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
415
    }
416
417
    zip_method = -1; // done
418
    return n;
419
}
420
421
var zip_inflate_stored = function(buff, off, size) {
422
    /* "decompress" an inflated type 0 (stored) block. */
423
    var n;
424
425
    // go to byte boundary
426
    n = zip_bit_len & 7;
427
    zip_DUMPBITS(n);
428
429
    // get the length and its complement
430
    zip_NEEDBITS(16);
431
    n = zip_GETBITS(16);
432
    zip_DUMPBITS(16);
433
    zip_NEEDBITS(16);
434
    if(n != ((~zip_bit_buf) & 0xffff))
435
	return -1;			// error in compressed data
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
436
    zip_DUMPBITS(16);
437
438
    // read and output the compressed data
439
    zip_copy_leng = n;
440
441
    n = 0;
442
    while(zip_copy_leng > 0 && n < size) {
0 ignored issues
show
The variable zip_copy_leng is changed as part of the while loop for example by zip_copy_leng-- on line 443. Only the value of the last iteration will be visible in this function if it is called after the loop.
Loading history...
443
	zip_copy_leng--;
444
	zip_wp &= zip_WSIZE - 1;
0 ignored issues
show
Comprehensibility Bug introduced by
The variable zip_wp does not seem to be initialized in case the while loop on line 442 is not entered. Are you sure this can never be the case?
Loading history...
445
	zip_NEEDBITS(8);
446
	buff[off + n++] = zip_slide[zip_wp++] =
0 ignored issues
show
The variable zip_wp is changed as part of the while loop for example by zip_WSIZE - 1 on line 444. Only the value of the last iteration will be visible in this function if it is called after the loop.
Loading history...
447
	    zip_GETBITS(8);
448
	zip_DUMPBITS(8);
449
    }
450
451
    if(zip_copy_leng == 0)
452
      zip_method = -1; // done
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
453
    return n;
454
}
455
456
var zip_inflate_fixed = function(buff, off, size) {
457
    /* decompress an inflated type 1 (fixed Huffman codes) block.  We should
458
       either replace this with a custom decoder, or at least precompute the
459
       Huffman tables. */
460
461
    // if first time, set up tables for fixed blocks
462
    if(zip_fixed_tl == null) {
463
	var i;			// temporary variable
464
	var l = new Array(288);	// length list for huft_build
465
	var h;	// zip_HuftBuild
466
467
	// literal table
468
	for(i = 0; i < 144; i++)
469
	    l[i] = 8;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
470
	for(; i < 256; i++)
471
	    l[i] = 9;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
472
	for(; i < 280; i++)
473
	    l[i] = 7;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
474
	for(; i < 288; i++)	// make a complete, but wrong code set
475
	    l[i] = 8;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
476
	zip_fixed_bl = 7;
477
478
	h = new zip_HuftBuild(l, 288, 257, zip_cplens, zip_cplext,
0 ignored issues
show
Coding Style Best Practice introduced by
By convention, constructors like zip_HuftBuild should be capitalized.
Loading history...
479
			      zip_fixed_bl);
480
	if(h.status != 0) {
481
	    alert("HufBuild error: "+h.status);
482
	    return -1;
483
	}
484
	zip_fixed_tl = h.root;
485
	zip_fixed_bl = h.m;
486
487
	// distance table
488
	for(i = 0; i < 30; i++)	// make an incomplete code set
489
	    l[i] = 5;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
490
	zip_fixed_bd = 5;
0 ignored issues
show
The variable zip_fixed_bd seems to be never declared. Assigning variables without defining them first makes them global. If this was intended, consider making it explicit like using window.zip_fixed_bd.
Loading history...
491
492
	h = new zip_HuftBuild(l, 30, 0, zip_cpdist, zip_cpdext, zip_fixed_bd);
0 ignored issues
show
Coding Style Best Practice introduced by
By convention, constructors like zip_HuftBuild should be capitalized.
Loading history...
493
	if(h.status > 1) {
494
	    zip_fixed_tl = null;
495
	    alert("HufBuild error: "+h.status);
496
	    return -1;
497
	}
498
	zip_fixed_td = h.root;
499
	zip_fixed_bd = h.m;
500
    }
501
502
    zip_tl = zip_fixed_tl;
503
    zip_td = zip_fixed_td;
0 ignored issues
show
The variable zip_fixed_td does not seem to be initialized in case zip_fixed_tl == null on line 462 is false. Are you sure this can never be the case?
Loading history...
504
    zip_bl = zip_fixed_bl;
0 ignored issues
show
The variable zip_fixed_bl does not seem to be initialized in case zip_fixed_tl == null on line 462 is false. Are you sure this can never be the case?
Loading history...
505
    zip_bd = zip_fixed_bd;
0 ignored issues
show
The variable zip_fixed_bd does not seem to be initialized in case zip_fixed_tl == null on line 462 is false. Are you sure this can never be the case?
Loading history...
506
    return zip_inflate_codes(buff, off, size);
507
}
508
509
var zip_inflate_dynamic = function(buff, off, size) {
510
    // decompress an inflated type 2 (dynamic Huffman codes) block.
511
    var i;		// temporary variables
512
    var j;
513
    var l;		// last length
514
    var n;		// number of lengths to get
515
    var t;		// (zip_HuftNode) literal/length code table
516
    var nb;		// number of bit length codes
517
    var nl;		// number of literal/length codes
518
    var nd;		// number of distance codes
519
    var ll = new Array(286+30); // literal/length and distance code lengths
520
    var h;		// (zip_HuftBuild)
521
522
    for(i = 0; i < ll.length; i++)
523
	ll[i] = 0;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
524
525
    // read in table lengths
526
    zip_NEEDBITS(5);
527
    nl = 257 + zip_GETBITS(5);	// number of literal/length codes
528
    zip_DUMPBITS(5);
529
    zip_NEEDBITS(5);
530
    nd = 1 + zip_GETBITS(5);	// number of distance codes
531
    zip_DUMPBITS(5);
532
    zip_NEEDBITS(4);
533
    nb = 4 + zip_GETBITS(4);	// number of bit length codes
534
    zip_DUMPBITS(4);
535
    if(nl > 286 || nd > 30)
536
      return -1;		// bad lengths
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
537
538
    // read in bit-length-code lengths
539
    for(j = 0; j < nb; j++)
540
    {
541
	zip_NEEDBITS(3);
542
	ll[zip_border[j]] = zip_GETBITS(3);
543
	zip_DUMPBITS(3);
544
    }
545
    for(; j < 19; j++)
546
	ll[zip_border[j]] = 0;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
547
548
    // build decoding table for trees--single level, 7 bit lookup
549
    zip_bl = 7;
550
    h = new zip_HuftBuild(ll, 19, 19, null, null, zip_bl);
0 ignored issues
show
Coding Style Best Practice introduced by
By convention, constructors like zip_HuftBuild should be capitalized.
Loading history...
551
    if(h.status != 0)
552
	return -1;	// incomplete code set
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
553
554
    zip_tl = h.root;
555
    zip_bl = h.m;
556
557
    // read in literal and distance code lengths
558
    n = nl + nd;
559
    i = l = 0;
0 ignored issues
show
Complexity Coding Style introduced by
You seem to be assigning a new value to the loop variable i here. Please check if this was indeed your intention. Even if it was, consider using another kind of loop instead.
Loading history...
560
    while(i < n) {
561
	zip_NEEDBITS(zip_bl);
562
	t = zip_tl.list[zip_GETBITS(zip_bl)];
563
	j = t.b;
0 ignored issues
show
Complexity Coding Style introduced by
You seem to be assigning a new value to the loop variable j here. Please check if this was indeed your intention. Even if it was, consider using another kind of loop instead.
Loading history...
564
	zip_DUMPBITS(j);
565
	j = t.n;
566
	if(j < 16)		// length of code in bits (0..15)
567
	    ll[i++] = l = j;	// save last length in l
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
568
	else if(j == 16) {	// repeat last length 3 to 6 times
569
	    zip_NEEDBITS(2);
570
	    j = 3 + zip_GETBITS(2);
571
	    zip_DUMPBITS(2);
572
	    if(i + j > n)
573
		return -1;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
574
	    while(j-- > 0)
575
		ll[i++] = l;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
576
	} else if(j == 17) {	// 3 to 10 zero length codes
577
	    zip_NEEDBITS(3);
578
	    j = 3 + zip_GETBITS(3);
579
	    zip_DUMPBITS(3);
580
	    if(i + j > n)
581
		return -1;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
582
	    while(j-- > 0)
583
		ll[i++] = 0;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
584
	    l = 0;
585
	} else {		// j == 18: 11 to 138 zero length codes
586
	    zip_NEEDBITS(7);
587
	    j = 11 + zip_GETBITS(7);
588
	    zip_DUMPBITS(7);
589
	    if(i + j > n)
590
		return -1;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
591
	    while(j-- > 0)
592
		ll[i++] = 0;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
593
	    l = 0;
594
	}
595
    }
596
597
    // build the decoding tables for literal/length and distance codes
598
    zip_bl = zip_lbits;
599
    h = new zip_HuftBuild(ll, nl, 257, zip_cplens, zip_cplext, zip_bl);
0 ignored issues
show
Coding Style Best Practice introduced by
By convention, constructors like zip_HuftBuild should be capitalized.
Loading history...
600
    if(zip_bl == 0)	// no literals or lengths
601
	h.status = 1;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
602
    if(h.status != 0) {
603
	if(h.status == 1)
604
	    ;// **incomplete literal tree**
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
605
	return -1;		// incomplete code set
606
    }
607
    zip_tl = h.root;
608
    zip_bl = h.m;
609
610
    for(i = 0; i < nd; i++)
611
	ll[i] = ll[i + nl];
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
612
    zip_bd = zip_dbits;
613
    h = new zip_HuftBuild(ll, nd, 0, zip_cpdist, zip_cpdext, zip_bd);
0 ignored issues
show
Coding Style Best Practice introduced by
By convention, constructors like zip_HuftBuild should be capitalized.
Loading history...
614
    zip_td = h.root;
615
    zip_bd = h.m;
616
617
    if(zip_bd == 0 && nl > 257) {   // lengths but no distances
618
	// **incomplete distance tree**
619
	return -1;
620
    }
621
622
    if(h.status == 1) {
623
	;// **incomplete distance tree**
624
    }
625
    if(h.status != 0)
626
	return -1;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
627
628
    // decompress until an end-of-block code
629
    return zip_inflate_codes(buff, off, size);
630
}
631
632
var zip_inflate_start = function() {
633
    var i;
0 ignored issues
show
The variable i seems to be never used. Consider removing it.
Loading history...
634
635
    if(zip_slide == null)
636
	zip_slide = new Array(2 * zip_WSIZE);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
637
    zip_wp = 0;
638
    zip_bit_buf = 0;
639
    zip_bit_len = 0;
640
    zip_method = -1;
641
    zip_eof = false;
642
    zip_copy_leng = zip_copy_dist = 0;
643
    zip_tl = null;
644
}
645
646
var zip_inflate_internal = function(buff, off, size) {
647
    // decompress an inflated entry
648
    var n, i;
649
650
    n = 0;
651
    while(n < size) {
652
	if(zip_eof && zip_method == -1)
0 ignored issues
show
The variable zip_method seems to not be initialized for all possible execution paths.
Loading history...
653
	    return n;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
654
655
	if(zip_copy_leng > 0) {
0 ignored issues
show
The variable zip_copy_leng seems to not be initialized for all possible execution paths.
Loading history...
656
	    if(zip_method != zip_STORED_BLOCK) {
657
		// STATIC_TREES or DYN_TREES
658
		while(zip_copy_leng > 0 && n < size) {
659
		    zip_copy_leng--;
660
		    zip_copy_dist &= zip_WSIZE - 1;
0 ignored issues
show
The variable zip_copy_dist seems to not be initialized for all possible execution paths.
Loading history...
661
		    zip_wp &= zip_WSIZE - 1;
0 ignored issues
show
The variable zip_wp seems to not be initialized for all possible execution paths.
Loading history...
662
		    buff[off + n++] = zip_slide[zip_wp++] =
0 ignored issues
show
The variable zip_wp is changed as part of the while loop for example by zip_WSIZE - 1 on line 661. Only the value of the last iteration will be visible in this function if it is called after the loop.
Loading history...
663
			zip_slide[zip_copy_dist++];
0 ignored issues
show
The variable zip_copy_dist is changed as part of the while loop for example by zip_WSIZE - 1 on line 660. Only the value of the last iteration will be visible in this function if it is called after the loop.
Loading history...
664
		}
665
	    } else {
666
		while(zip_copy_leng > 0 && n < size) {
667
		    zip_copy_leng--;
668
		    zip_wp &= zip_WSIZE - 1;
669
		    zip_NEEDBITS(8);
670
		    buff[off + n++] = zip_slide[zip_wp++] = zip_GETBITS(8);
671
		    zip_DUMPBITS(8);
672
		}
673
		if(zip_copy_leng == 0)
674
		    zip_method = -1; // done
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
675
	    }
676
	    if(n == size)
677
		return n;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
678
	}
679
680
	if(zip_method == -1) {
681
	    if(zip_eof)
682
		break;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
683
684
	    // read in last block bit
685
	    zip_NEEDBITS(1);
686
	    if(zip_GETBITS(1) != 0)
687
		zip_eof = true;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
688
	    zip_DUMPBITS(1);
689
690
	    // read in block type
691
	    zip_NEEDBITS(2);
692
	    zip_method = zip_GETBITS(2);
693
	    zip_DUMPBITS(2);
694
	    zip_tl = null;
695
	    zip_copy_leng = 0;
696
	}
697
698
	switch(zip_method) {
699
	  case 0: // zip_STORED_BLOCK
700
	    i = zip_inflate_stored(buff, off + n, size - n);
701
	    break;
702
703
	  case 1: // zip_STATIC_TREES
704
	    if(zip_tl != null)
0 ignored issues
show
The variable zip_tl seems to not be initialized for all possible execution paths.
Loading history...
705
		i = zip_inflate_codes(buff, off + n, size - n);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
706
	    else
707
		i = zip_inflate_fixed(buff, off + n, size - n);
708
	    break;
709
710
	  case 2: // zip_DYN_TREES
711
	    if(zip_tl != null)
712
		i = zip_inflate_codes(buff, off + n, size - n);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
713
	    else
714
		i = zip_inflate_dynamic(buff, off + n, size - n);
715
	    break;
716
717
	  default: // error
718
	    i = -1;
719
	    break;
720
	}
721
722
	if(i == -1) {
723
	    if(zip_eof)
724
		return 0;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
725
	    return -1;
726
	}
727
	n += i;
728
    }
729
    return n;
730
}
731
732
var zip_inflate = function(str) {
733
    var i, j;
734
735
    zip_inflate_start();
736
    zip_inflate_data = str;
737
    zip_inflate_pos = 0;
738
739
    var buff = new Array(1024);
740
    var aout = [];
741
    while((i = zip_inflate_internal(buff, 0, buff.length)) > 0) {
742
	var cbuf = new Array(i);
0 ignored issues
show
Coding Style Best Practice introduced by
Using the Array constructor is generally discouraged. Consider using an array literal instead.
Loading history...
743
	for(j = 0; j < i; j++){
744
	    cbuf[j] = String.fromCharCode(buff[j]);
745
	}
746
	aout[aout.length] = cbuf.join("");
747
    }
748
    zip_inflate_data = null; // G.C.
749
    return aout.join("");
750
}
751
752
if (! ctx.RawDeflate) ctx.RawDeflate = {};
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
753
ctx.RawDeflate.inflate = zip_inflate;
754
755
})(this);
756