(deps/libz) Cleanups

This commit is contained in:
twinaphex 2020-07-02 18:55:54 +02:00
parent c86ba43c73
commit 1f86ea1c4c

167
deps/libz/inffast.c vendored
View File

@ -47,18 +47,6 @@ output space.
*/
void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start)
{
unsigned char FAR *beg; /* inflate()'s initial strm->next_out */
unsigned char FAR *end; /* while out < end, enough space available */
unsigned wsize; /* window size or zero if not using window */
unsigned whave; /* valid bytes in the window */
unsigned wnext; /* window write index */
unsigned char FAR *window; /* allocated sliding window, if wsize != 0 */
unsigned long hold; /* local strm->hold */
unsigned bits; /* local strm->bits */
code const FAR *lcode; /* local strm->lencode */
code const FAR *dcode; /* local strm->distcode */
unsigned lmask; /* mask for first level of length codes */
unsigned dmask; /* mask for first level of distance codes */
code here; /* retrieved table entry */
unsigned op; /* code bits, operation, extra bits, or */
/* window position, window bytes to copy */
@ -69,25 +57,27 @@ void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start)
/* copy state to local variables */
struct inflate_state FAR *state = (struct inflate_state FAR *)strm->state;
unsigned char FAR *in = strm->next_in;
unsigned char FAR *last = last = in + (strm->avail_in - 5);
unsigned char FAR *last = in + (strm->avail_in - 5);
unsigned char FAR *out = strm->next_out;
beg = out - (start - strm->avail_out);
end = out + (strm->avail_out - 257);
wsize = state->wsize;
whave = state->whave;
wnext = state->wnext;
window = state->window;
hold = state->hold;
bits = state->bits;
lcode = state->lencode;
dcode = state->distcode;
lmask = (1U << state->lenbits) - 1;
dmask = (1U << state->distbits) - 1;
unsigned char FAR *beg = out - (start - strm->avail_out);
unsigned char FAR *end = out + (strm->avail_out - 257);
unsigned wsize = state->wsize;
unsigned whave = state->whave;
unsigned wnext = state->wnext;
unsigned char FAR *window = state->window;
unsigned long hold = state->hold;
unsigned bits = state->bits;
code const FAR *lcode = state->lencode;
code const FAR *dcode = state->distcode;
unsigned lmask = (1U << state->lenbits) - 1;
unsigned dmask = (1U << state->distbits) - 1;
/* decode literals and length/distances until end-of-block or not enough
input data or output space */
do {
if (bits < 15) {
do
{
if (bits < 15)
{
hold += (unsigned long)(*in++) << bits;
bits += 8;
hold += (unsigned long)(*in++) << bits;
@ -99,52 +89,64 @@ dolen:
hold >>= op;
bits -= op;
op = (unsigned)(here.op);
if (op == 0) { /* literal */
if (op == 0) /* literal */
*out++ = (unsigned char)(here.val);
}
else if (op & 16) { /* length base */
else if (op & 16) /* length base */
{
len = (unsigned)(here.val);
op &= 15; /* number of extra bits */
if (op) {
if (bits < op) {
if (op)
{
if (bits < op)
{
hold += (unsigned long)(*in++) << bits;
bits += 8;
}
len += (unsigned)hold & ((1U << op) - 1);
len += (unsigned)hold & ((1U << op) - 1);
hold >>= op;
bits -= op;
bits -= op;
}
if (bits < 15) {
if (bits < 15)
{
hold += (unsigned long)(*in++) << bits;
bits += 8;
hold += (unsigned long)(*in++) << bits;
bits += 8;
}
here = dcode[hold & dmask];
dodist:
op = (unsigned)(here.bits);
hold >>= op;
bits -= op;
op = (unsigned)(here.op);
if (op & 16) { /* distance base */
if (op & 16) /* distance base */
{
dist = (unsigned)(here.val);
op &= 15; /* number of extra bits */
if (bits < op) {
if (bits < op)
{
hold += (unsigned long)(*in++) << bits;
bits += 8;
if (bits < op) {
if (bits < op)
{
hold += (unsigned long)(*in++) << bits;
bits += 8;
}
}
dist += (unsigned)hold & ((1U << op) - 1);
dist += (unsigned)hold & ((1U << op) - 1);
hold >>= op;
bits -= op;
op = (unsigned)(out - beg); /* max distance in output */
if (dist > op) { /* see if copy from window */
op = dist - op; /* distance back in window */
if (op > whave) {
if (state->sane) {
bits -= op;
op = (unsigned)(out - beg); /* max distance in output */
if (dist > op) /* see if copy from window */
{
op = dist - op; /* distance back in window */
if (op > whave)
{
if (state->sane)
{
strm->msg =
(char *)"invalid distance too far back";
state->mode = BAD;
@ -152,9 +154,11 @@ dodist:
}
}
from = window;
if (wnext == 0) { /* very common case */
if (wnext == 0) /* very common case */
{
from += wsize - op;
if (op < len) { /* some from window */
if (op < len) /* some from window */
{
len -= op;
do {
*out++ = *from++;
@ -162,16 +166,19 @@ dodist:
from = out - dist; /* rest from output */
}
}
else if (wnext < op) { /* wrap around window */
else if (wnext < op) /* wrap around window */
{
from += wsize + wnext - op;
op -= wnext;
if (op < len) { /* some from end of window */
if (op < len) /* some from end of window */
{
len -= op;
do {
*out++ = *from++;
} while (--op);
from = window;
if (wnext < len) { /* some from start of window */
if (wnext < len) /* some from start of window */
{
op = wnext;
len -= op;
do {
@ -181,9 +188,11 @@ dodist:
}
}
}
else { /* contiguous in window */
else /* contiguous in window */
{
from += wnext - op;
if (op < len) { /* some from window */
if (op < len) /* some from window */
{
len -= op;
do {
*out++ = *from++;
@ -191,52 +200,64 @@ dodist:
from = out - dist; /* rest from output */
}
}
while (len > 2) {
while (len > 2)
{
*out++ = *from++;
*out++ = *from++;
*out++ = *from++;
len -= 3;
}
if (len) {
if (len)
{
*out++ = *from++;
if (len > 1)
*out++ = *from++;
}
}
else {
else
{
from = out - dist; /* copy direct from output */
do { /* minimum length is three */
*out++ = *from++;
*out++ = *from++;
*out++ = *from++;
len -= 3;
} while (len > 2);
if (len) {
}while(len > 2);
if (len)
{
*out++ = *from++;
if (len > 1)
*out++ = *from++;
}
}
}
else if ((op & 64) == 0) { /* 2nd level distance code */
else if ((op & 64) == 0) /* 2nd level distance code */
{
here = dcode[here.val + (hold & ((1U << op) - 1))];
goto dodist;
}
else {
strm->msg = (char *)"invalid distance code";
else
{
strm->msg = (char *)"invalid distance code";
state->mode = BAD;
break;
}
}
else if ((op & 64) == 0) { /* 2nd level length code */
else if ((op & 64) == 0) /* 2nd level length code */
{
here = lcode[here.val + (hold & ((1U << op) - 1))];
goto dolen;
}
else if (op & 32) { /* end-of-block */
else if (op & 32) /* end-of-block */
{
state->mode = TYPE;
break;
}
else {
else
{
strm->msg = (char *)"invalid literal/length code";
state->mode = BAD;
break;
@ -244,19 +265,19 @@ dodist:
} while (in < last && out < end);
/* return unused bytes (on entry, bits < 8, so in won't go too far back) */
len = bits >> 3;
in -= len;
bits -= len << 3;
hold &= (1U << bits) - 1;
len = bits >> 3;
in -= len;
bits -= len << 3;
hold &= (1U << bits) - 1;
/* update state and return */
strm->next_in = in;
strm->next_out = out;
strm->avail_in = (unsigned)(in < last ? 5 + (last - in) : 5 - (in - last));
strm->avail_out = (unsigned)(out < end ?
strm->next_in = in;
strm->next_out = out;
strm->avail_in = (unsigned)(in < last ? 5 + (last - in) : 5 - (in - last));
strm->avail_out = (unsigned)(out < end ?
257 + (end - out) : 257 - (out - end));
state->hold = hold;
state->bits = bits;
state->hold = hold;
state->bits = bits;
}
/*