Merge 9a42a99a9d into 28f5066e33
This commit is contained in:
commit
81e3b5b89c
23
miniz.c
23
miniz.c
@ -1497,7 +1497,10 @@ tinfl_status tinfl_decompress(tinfl_decompressor *r, const mz_uint8 *pIn_buf_nex
|
|||||||
{
|
{
|
||||||
mz_uint8 *p = r->m_tables[0].m_code_size; mz_uint i;
|
mz_uint8 *p = r->m_tables[0].m_code_size; mz_uint i;
|
||||||
r->m_table_sizes[0] = 288; r->m_table_sizes[1] = 32; TINFL_MEMSET(r->m_tables[1].m_code_size, 5, 32);
|
r->m_table_sizes[0] = 288; r->m_table_sizes[1] = 32; TINFL_MEMSET(r->m_tables[1].m_code_size, 5, 32);
|
||||||
for ( i = 0; i <= 143; ++i) *p++ = 8; for ( ; i <= 255; ++i) *p++ = 9; for ( ; i <= 279; ++i) *p++ = 7; for ( ; i <= 287; ++i) *p++ = 8;
|
for ( i = 0; i <= 143; ++i) *p++ = 8;
|
||||||
|
for ( ; i <= 255; ++i) *p++ = 9;
|
||||||
|
for ( ; i <= 279; ++i) *p++ = 7;
|
||||||
|
for ( ; i <= 287; ++i) *p++ = 8;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -2281,7 +2284,17 @@ static MZ_FORCEINLINE void tdefl_find_match(tdefl_compressor *d, mz_uint lookahe
|
|||||||
if (TDEFL_READ_UNALIGNED_WORD(&d->m_dict[probe_pos + match_len - 1]) == c01) break;
|
if (TDEFL_READ_UNALIGNED_WORD(&d->m_dict[probe_pos + match_len - 1]) == c01) break;
|
||||||
TDEFL_PROBE; TDEFL_PROBE; TDEFL_PROBE;
|
TDEFL_PROBE; TDEFL_PROBE; TDEFL_PROBE;
|
||||||
}
|
}
|
||||||
if (!dist) break; q = (const mz_uint16*)(d->m_dict + probe_pos); if (TDEFL_READ_UNALIGNED_WORD(q) != s01) continue; p = s; probe_len = 32;
|
if (!dist)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
q = (const mz_uint16*)(d->m_dict + probe_pos);
|
||||||
|
if (TDEFL_READ_UNALIGNED_WORD(q) != s01)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
p = s;
|
||||||
|
probe_len = 32;
|
||||||
do { } while ( (TDEFL_READ_UNALIGNED_WORD(++p) == TDEFL_READ_UNALIGNED_WORD(++q)) && (TDEFL_READ_UNALIGNED_WORD(++p) == TDEFL_READ_UNALIGNED_WORD(++q)) &&
|
do { } while ( (TDEFL_READ_UNALIGNED_WORD(++p) == TDEFL_READ_UNALIGNED_WORD(++q)) && (TDEFL_READ_UNALIGNED_WORD(++p) == TDEFL_READ_UNALIGNED_WORD(++q)) &&
|
||||||
(TDEFL_READ_UNALIGNED_WORD(++p) == TDEFL_READ_UNALIGNED_WORD(++q)) && (TDEFL_READ_UNALIGNED_WORD(++p) == TDEFL_READ_UNALIGNED_WORD(++q)) && (--probe_len > 0) );
|
(TDEFL_READ_UNALIGNED_WORD(++p) == TDEFL_READ_UNALIGNED_WORD(++q)) && (TDEFL_READ_UNALIGNED_WORD(++p) == TDEFL_READ_UNALIGNED_WORD(++q)) && (--probe_len > 0) );
|
||||||
if (!probe_len)
|
if (!probe_len)
|
||||||
@ -2290,7 +2303,11 @@ static MZ_FORCEINLINE void tdefl_find_match(tdefl_compressor *d, mz_uint lookahe
|
|||||||
}
|
}
|
||||||
else if ((probe_len = ((mz_uint)(p - s) * 2) + (mz_uint)(*(const mz_uint8*)p == *(const mz_uint8*)q)) > match_len)
|
else if ((probe_len = ((mz_uint)(p - s) * 2) + (mz_uint)(*(const mz_uint8*)p == *(const mz_uint8*)q)) > match_len)
|
||||||
{
|
{
|
||||||
*pMatch_dist = dist; if ((*pMatch_len = match_len = MZ_MIN(max_match_len, probe_len)) == max_match_len) break;
|
*pMatch_dist = dist;
|
||||||
|
if ((*pMatch_len = match_len = MZ_MIN(max_match_len, probe_len)) == max_match_len)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
c01 = TDEFL_READ_UNALIGNED_WORD(&d->m_dict[pos + match_len - 1]);
|
c01 = TDEFL_READ_UNALIGNED_WORD(&d->m_dict[pos + match_len - 1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
22
tinfl.c
22
tinfl.c
@ -297,13 +297,27 @@ tinfl_status tinfl_decompress(tinfl_decompressor *r, const mz_uint8 *pIn_buf_nex
|
|||||||
if (r->m_type == 1)
|
if (r->m_type == 1)
|
||||||
{
|
{
|
||||||
mz_uint8 *p = r->m_tables[0].m_code_size; mz_uint i;
|
mz_uint8 *p = r->m_tables[0].m_code_size; mz_uint i;
|
||||||
r->m_table_sizes[0] = 288; r->m_table_sizes[1] = 32; TINFL_MEMSET(r->m_tables[1].m_code_size, 5, 32);
|
r->m_table_sizes[0] = 288; r->m_table_sizes[1] = 32;
|
||||||
for ( i = 0; i <= 143; ++i) *p++ = 8; for ( ; i <= 255; ++i) *p++ = 9; for ( ; i <= 279; ++i) *p++ = 7; for ( ; i <= 287; ++i) *p++ = 8;
|
TINFL_MEMSET(r->m_tables[1].m_code_size, 5, 32);
|
||||||
|
for ( i = 0; i <= 143; ++i) *p++ = 8;
|
||||||
|
for ( ; i <= 255; ++i) *p++ = 9;
|
||||||
|
for ( ; i <= 279; ++i) *p++ = 7;
|
||||||
|
for ( ; i <= 287; ++i) *p++ = 8;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for (counter = 0; counter < 3; counter++) { TINFL_GET_BITS(11, r->m_table_sizes[counter], "\05\05\04"[counter]); r->m_table_sizes[counter] += s_min_table_sizes[counter]; }
|
for (counter = 0; counter < 3; counter++)
|
||||||
MZ_CLEAR_OBJ(r->m_tables[2].m_code_size); for (counter = 0; counter < r->m_table_sizes[2]; counter++) { mz_uint s; TINFL_GET_BITS(14, s, 3); r->m_tables[2].m_code_size[s_length_dezigzag[counter]] = (mz_uint8)s; }
|
{
|
||||||
|
TINFL_GET_BITS(11, r->m_table_sizes[counter], "\05\05\04"[counter]);
|
||||||
|
r->m_table_sizes[counter] += s_min_table_sizes[counter];
|
||||||
|
|
||||||
|
}
|
||||||
|
MZ_CLEAR_OBJ(r->m_tables[2].m_code_size);
|
||||||
|
for (counter = 0; counter < r->m_table_sizes[2]; counter++)
|
||||||
|
{
|
||||||
|
mz_uint s; TINFL_GET_BITS(14, s, 3);
|
||||||
|
r->m_tables[2].m_code_size[s_length_dezigzag[counter]] = (mz_uint8)s;
|
||||||
|
}
|
||||||
r->m_table_sizes[2] = 19;
|
r->m_table_sizes[2] = 19;
|
||||||
}
|
}
|
||||||
for ( ; (int)r->m_type >= 0; r->m_type--)
|
for ( ; (int)r->m_type >= 0; r->m_type--)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user