mirror of https://github.com/YosysHQ/abc.git
Merge pull request #512 from maliberty/update-bzip2
Update bzip2 from version 1.0.5 to 1.0.8
This commit is contained in:
commit
f1ec6d32d8
|
|
@ -8,8 +8,8 @@
|
||||||
This file is part of bzip2/libbzip2, a program and library for
|
This file is part of bzip2/libbzip2, a program and library for
|
||||||
lossless, block-sorting data compression.
|
lossless, block-sorting data compression.
|
||||||
|
|
||||||
bzip2/libbzip2 version 1.0.5 of 10 December 2007
|
bzip2/libbzip2 version 1.0.8 of 13 July 2019
|
||||||
Copyright (C) 1996-2007 Julian Seward <jseward@bzip.org>
|
Copyright (C) 1996-2019 Julian Seward <jseward@acm.org>
|
||||||
|
|
||||||
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||||
README file.
|
README file.
|
||||||
|
|
@ -204,9 +204,9 @@ void fallbackQSort3 ( UInt32* fmap,
|
||||||
bhtab [ 0 .. 2+(nblock/32) ] destroyed
|
bhtab [ 0 .. 2+(nblock/32) ] destroyed
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define SET_BH(zz) bhtab[(zz) >> 5] |= (1 << ((zz) & 31))
|
#define SET_BH(zz) bhtab[(zz) >> 5] |= ((UInt32)1 << ((zz) & 31))
|
||||||
#define CLEAR_BH(zz) bhtab[(zz) >> 5] &= ~(1 << ((zz) & 31))
|
#define CLEAR_BH(zz) bhtab[(zz) >> 5] &= ~((UInt32)1 << ((zz) & 31))
|
||||||
#define ISSET_BH(zz) (bhtab[(zz) >> 5] & (1 << ((zz) & 31)))
|
#define ISSET_BH(zz) (bhtab[(zz) >> 5] & ((UInt32)1 << ((zz) & 31)))
|
||||||
#define WORD_BH(zz) bhtab[(zz) >> 5]
|
#define WORD_BH(zz) bhtab[(zz) >> 5]
|
||||||
#define UNALIGNED_BH(zz) ((zz) & 0x01f)
|
#define UNALIGNED_BH(zz) ((zz) & 0x01f)
|
||||||
|
|
||||||
|
|
@ -276,7 +276,7 @@ void fallbackSort ( UInt32* fmap,
|
||||||
r = -1;
|
r = -1;
|
||||||
while (1) {
|
while (1) {
|
||||||
|
|
||||||
/*-- find the next non-singleton bucket --*/
|
/*-- find the next non-singleton bucket --*/
|
||||||
k = r + 1;
|
k = r + 1;
|
||||||
while (ISSET_BH(k) && UNALIGNED_BH(k)) k++;
|
while (ISSET_BH(k) && UNALIGNED_BH(k)) k++;
|
||||||
if (ISSET_BH(k)) {
|
if (ISSET_BH(k)) {
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,8 @@
|
||||||
This file is part of bzip2/libbzip2, a program and library for
|
This file is part of bzip2/libbzip2, a program and library for
|
||||||
lossless, block-sorting data compression.
|
lossless, block-sorting data compression.
|
||||||
|
|
||||||
bzip2/libbzip2 version 1.0.5 of 10 December 2007
|
bzip2/libbzip2 version 1.0.8 of 13 July 2019
|
||||||
Copyright (C) 1996-2007 Julian Seward <jseward@bzip.org>
|
Copyright (C) 1996-2019 Julian Seward <jseward@acm.org>
|
||||||
|
|
||||||
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||||
README file.
|
README file.
|
||||||
|
|
@ -54,12 +54,12 @@ void BZ2_bz__AssertH__fail ( int errcode )
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"\n\nbzip2/libbzip2: internal error number %d.\n"
|
"\n\nbzip2/libbzip2: internal error number %d.\n"
|
||||||
"This is a bug in bzip2/libbzip2, %s.\n"
|
"This is a bug in bzip2/libbzip2, %s.\n"
|
||||||
"Please report it to me at: jseward@bzip.org. If this happened\n"
|
"Please report it to: bzip2-devel@sourceware.org. If this happened\n"
|
||||||
"when you were using some program which uses libbzip2 as a\n"
|
"when you were using some program which uses libbzip2 as a\n"
|
||||||
"component, you should also report this bug to the author(s)\n"
|
"component, you should also report this bug to the author(s)\n"
|
||||||
"of that program. Please make an effort to report this bug;\n"
|
"of that program. Please make an effort to report this bug;\n"
|
||||||
"timely and accurate bug reports eventually lead to higher\n"
|
"timely and accurate bug reports eventually lead to higher\n"
|
||||||
"quality software. Thanks. Julian Seward, 10 December 2007.\n\n",
|
"quality software. Thanks.\n\n",
|
||||||
errcode,
|
errcode,
|
||||||
BZ2_bzlibVersion()
|
BZ2_bzlibVersion()
|
||||||
);
|
);
|
||||||
|
|
@ -436,7 +436,7 @@ int BZ_API(BZ2_bzCompress) ( bz_stream *strm, int action )
|
||||||
return progress ? BZ_RUN_OK : BZ_PARAM_ERROR;
|
return progress ? BZ_RUN_OK : BZ_PARAM_ERROR;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (action == BZ_FLUSH) {
|
if (action == BZ_FLUSH) {
|
||||||
s->avail_in_expect = strm->avail_in;
|
s->avail_in_expect = strm->avail_in;
|
||||||
s->mode = BZ_M_FLUSHING;
|
s->mode = BZ_M_FLUSHING;
|
||||||
goto preswitch;
|
goto preswitch;
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,8 @@
|
||||||
This file is part of bzip2/libbzip2, a program and library for
|
This file is part of bzip2/libbzip2, a program and library for
|
||||||
lossless, block-sorting data compression.
|
lossless, block-sorting data compression.
|
||||||
|
|
||||||
bzip2/libbzip2 version 1.0.5 of 10 December 2007
|
bzip2/libbzip2 version 1.0.8 of 13 July 2019
|
||||||
Copyright (C) 1996-2007 Julian Seward <jseward@bzip.org>
|
Copyright (C) 1996-2019 Julian Seward <jseward@acm.org>
|
||||||
|
|
||||||
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||||
README file.
|
README file.
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,8 @@
|
||||||
This file is part of bzip2/libbzip2, a program and library for
|
This file is part of bzip2/libbzip2, a program and library for
|
||||||
lossless, block-sorting data compression.
|
lossless, block-sorting data compression.
|
||||||
|
|
||||||
bzip2/libbzip2 version 1.0.5 of 10 December 2007
|
bzip2/libbzip2 version 1.0.8 of 13 July 2019
|
||||||
Copyright (C) 1996-2007 Julian Seward <jseward@bzip.org>
|
Copyright (C) 1996-2019 Julian Seward <jseward@acm.org>
|
||||||
|
|
||||||
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||||
README file.
|
README file.
|
||||||
|
|
@ -38,7 +38,7 @@ ABC_NAMESPACE_HEADER_START
|
||||||
|
|
||||||
/*-- General stuff. --*/
|
/*-- General stuff. --*/
|
||||||
|
|
||||||
#define BZ_VERSION "1.0.5, 10-Dec-2007"
|
#define BZ_VERSION "1.0.8, 13-Jul-2019"
|
||||||
|
|
||||||
typedef char Char;
|
typedef char Char;
|
||||||
typedef unsigned char Bool;
|
typedef unsigned char Bool;
|
||||||
|
|
@ -483,7 +483,7 @@ typedef
|
||||||
|
|
||||||
/*-- externs for decompression. --*/
|
/*-- externs for decompression. --*/
|
||||||
|
|
||||||
Int32
|
extern Int32
|
||||||
BZ2_indexIntoF ( Int32, Int32* );
|
BZ2_indexIntoF ( Int32, Int32* );
|
||||||
|
|
||||||
extern Int32
|
extern Int32
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,8 @@
|
||||||
This file is part of bzip2/libbzip2, a program and library for
|
This file is part of bzip2/libbzip2, a program and library for
|
||||||
lossless, block-sorting data compression.
|
lossless, block-sorting data compression.
|
||||||
|
|
||||||
bzip2/libbzip2 version 1.0.5 of 10 December 2007
|
bzip2/libbzip2 version 1.0.8 of 13 July 2019
|
||||||
Copyright (C) 1996-2007 Julian Seward <jseward@bzip.org>
|
Copyright (C) 1996-2019 Julian Seward <jseward@acm.org>
|
||||||
|
|
||||||
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||||
README file.
|
README file.
|
||||||
|
|
@ -332,14 +332,14 @@ void sendMTFValues ( EState* s )
|
||||||
|
|
||||||
/*---
|
/*---
|
||||||
Set up an auxiliary length table which is used to fast-track
|
Set up an auxiliary length table which is used to fast-track
|
||||||
the common case (nGroups == 6).
|
the common case (nGroups == 6).
|
||||||
---*/
|
---*/
|
||||||
if (nGroups == 6) {
|
if (nGroups == 6) {
|
||||||
for (v = 0; v < alphaSize; v++) {
|
for (v = 0; v < alphaSize; v++) {
|
||||||
s->len_pack[v][0] = (s->len[1][v] << 16) | s->len[0][v];
|
s->len_pack[v][0] = (s->len[1][v] << 16) | s->len[0][v];
|
||||||
s->len_pack[v][1] = (s->len[3][v] << 16) | s->len[2][v];
|
s->len_pack[v][1] = (s->len[3][v] << 16) | s->len[2][v];
|
||||||
s->len_pack[v][2] = (s->len[5][v] << 16) | s->len[4][v];
|
s->len_pack[v][2] = (s->len[5][v] << 16) | s->len[4][v];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
nSelectors = 0;
|
nSelectors = 0;
|
||||||
|
|
@ -388,7 +388,7 @@ void sendMTFValues ( EState* s )
|
||||||
cost[4] = cost45 & 0xffff; cost[5] = cost45 >> 16;
|
cost[4] = cost45 & 0xffff; cost[5] = cost45 >> 16;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
/*--- slow version which correctly handles all situations ---*/
|
/*--- slow version which correctly handles all situations ---*/
|
||||||
for (i = gs; i <= ge; i++) {
|
for (i = gs; i <= ge; i++) {
|
||||||
UInt16 icv = mtfv[i];
|
UInt16 icv = mtfv[i];
|
||||||
for (t = 0; t < nGroups; t++) cost[t] += s->len[t][icv];
|
for (t = 0; t < nGroups; t++) cost[t] += s->len[t][icv];
|
||||||
|
|
@ -429,7 +429,7 @@ void sendMTFValues ( EState* s )
|
||||||
# undef BZ_ITUR
|
# undef BZ_ITUR
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
/*--- slow version which correctly handles all situations ---*/
|
/*--- slow version which correctly handles all situations ---*/
|
||||||
for (i = gs; i <= ge; i++)
|
for (i = gs; i <= ge; i++)
|
||||||
s->rfreq[bt][ mtfv[i] ]++;
|
s->rfreq[bt][ mtfv[i] ]++;
|
||||||
}
|
}
|
||||||
|
|
@ -457,7 +457,7 @@ void sendMTFValues ( EState* s )
|
||||||
|
|
||||||
AssertH( nGroups < 8, 3002 );
|
AssertH( nGroups < 8, 3002 );
|
||||||
AssertH( nSelectors < 32768 &&
|
AssertH( nSelectors < 32768 &&
|
||||||
nSelectors <= (2 + (900000 / BZ_G_SIZE)),
|
nSelectors <= BZ_MAX_SELECTORS,
|
||||||
3003 );
|
3003 );
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -582,7 +582,7 @@ void sendMTFValues ( EState* s )
|
||||||
# undef BZ_ITAH
|
# undef BZ_ITAH
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
/*--- slow version which correctly handles all situations ---*/
|
/*--- slow version which correctly handles all situations ---*/
|
||||||
for (i = gs; i <= ge; i++) {
|
for (i = gs; i <= ge; i++) {
|
||||||
bsW ( s,
|
bsW ( s,
|
||||||
s->len [s->selector[selCtr]] [mtfv[i]],
|
s->len [s->selector[selCtr]] [mtfv[i]],
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,8 @@
|
||||||
This file is part of bzip2/libbzip2, a program and library for
|
This file is part of bzip2/libbzip2, a program and library for
|
||||||
lossless, block-sorting data compression.
|
lossless, block-sorting data compression.
|
||||||
|
|
||||||
bzip2/libbzip2 version 1.0.5 of 10 December 2007
|
bzip2/libbzip2 version 1.0.8 of 13 July 2019
|
||||||
Copyright (C) 1996-2007 Julian Seward <jseward@bzip.org>
|
Copyright (C) 1996-2019 Julian Seward <jseward@acm.org>
|
||||||
|
|
||||||
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||||
README file.
|
README file.
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,8 @@
|
||||||
This file is part of bzip2/libbzip2, a program and library for
|
This file is part of bzip2/libbzip2, a program and library for
|
||||||
lossless, block-sorting data compression.
|
lossless, block-sorting data compression.
|
||||||
|
|
||||||
bzip2/libbzip2 version 1.0.5 of 10 December 2007
|
bzip2/libbzip2 version 1.0.8 of 13 July 2019
|
||||||
Copyright (C) 1996-2007 Julian Seward <jseward@bzip.org>
|
Copyright (C) 1996-2019 Julian Seward <jseward@acm.org>
|
||||||
|
|
||||||
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||||
README file.
|
README file.
|
||||||
|
|
@ -292,7 +292,7 @@ Int32 BZ2_decompress ( DState* s )
|
||||||
|
|
||||||
/*--- Now the selectors ---*/
|
/*--- Now the selectors ---*/
|
||||||
GET_BITS(BZ_X_SELECTOR_1, nGroups, 3);
|
GET_BITS(BZ_X_SELECTOR_1, nGroups, 3);
|
||||||
if (nGroups < 2 || nGroups > 6) RETURN(BZ_DATA_ERROR);
|
if (nGroups < 2 || nGroups > BZ_N_GROUPS) RETURN(BZ_DATA_ERROR);
|
||||||
GET_BITS(BZ_X_SELECTOR_2, nSelectors, 15);
|
GET_BITS(BZ_X_SELECTOR_2, nSelectors, 15);
|
||||||
if (nSelectors < 1) RETURN(BZ_DATA_ERROR);
|
if (nSelectors < 1) RETURN(BZ_DATA_ERROR);
|
||||||
for (i = 0; i < nSelectors; i++) {
|
for (i = 0; i < nSelectors; i++) {
|
||||||
|
|
@ -303,8 +303,14 @@ Int32 BZ2_decompress ( DState* s )
|
||||||
j++;
|
j++;
|
||||||
if (j >= nGroups) RETURN(BZ_DATA_ERROR);
|
if (j >= nGroups) RETURN(BZ_DATA_ERROR);
|
||||||
}
|
}
|
||||||
s->selectorMtf[i] = j;
|
/* Having more than BZ_MAX_SELECTORS doesn't make much sense
|
||||||
|
since they will never be used, but some implementations might
|
||||||
|
"round up" the number of selectors, so just ignore those. */
|
||||||
|
if (i < BZ_MAX_SELECTORS)
|
||||||
|
s->selectorMtf[i] = j;
|
||||||
}
|
}
|
||||||
|
if (nSelectors > BZ_MAX_SELECTORS)
|
||||||
|
nSelectors = BZ_MAX_SELECTORS;
|
||||||
|
|
||||||
/*--- Undo the MTF values for the selectors. ---*/
|
/*--- Undo the MTF values for the selectors. ---*/
|
||||||
{
|
{
|
||||||
|
|
@ -388,6 +394,13 @@ Int32 BZ2_decompress ( DState* s )
|
||||||
es = -1;
|
es = -1;
|
||||||
N = 1;
|
N = 1;
|
||||||
do {
|
do {
|
||||||
|
/* Check that N doesn't get too big, so that es doesn't
|
||||||
|
go negative. The maximum value that can be
|
||||||
|
RUNA/RUNB encoded is equal to the block size (post
|
||||||
|
the initial RLE), viz, 900k, so bounding N at 2
|
||||||
|
million should guard against overflow without
|
||||||
|
rejecting any legitimate inputs. */
|
||||||
|
if (N >= 2*1024*1024) RETURN(BZ_DATA_ERROR);
|
||||||
if (nextSym == BZ_RUNA) es = es + (0+1) * N; else
|
if (nextSym == BZ_RUNA) es = es + (0+1) * N; else
|
||||||
if (nextSym == BZ_RUNB) es = es + (1+1) * N;
|
if (nextSym == BZ_RUNB) es = es + (1+1) * N;
|
||||||
N = N * 2;
|
N = N * 2;
|
||||||
|
|
@ -492,15 +505,28 @@ Int32 BZ2_decompress ( DState* s )
|
||||||
RETURN(BZ_DATA_ERROR);
|
RETURN(BZ_DATA_ERROR);
|
||||||
|
|
||||||
/*-- Set up cftab to facilitate generation of T^(-1) --*/
|
/*-- Set up cftab to facilitate generation of T^(-1) --*/
|
||||||
|
/* Check: unzftab entries in range. */
|
||||||
|
for (i = 0; i <= 255; i++) {
|
||||||
|
if (s->unzftab[i] < 0 || s->unzftab[i] > nblock)
|
||||||
|
RETURN(BZ_DATA_ERROR);
|
||||||
|
}
|
||||||
|
/* Actually generate cftab. */
|
||||||
s->cftab[0] = 0;
|
s->cftab[0] = 0;
|
||||||
for (i = 1; i <= 256; i++) s->cftab[i] = s->unzftab[i-1];
|
for (i = 1; i <= 256; i++) s->cftab[i] = s->unzftab[i-1];
|
||||||
for (i = 1; i <= 256; i++) s->cftab[i] += s->cftab[i-1];
|
for (i = 1; i <= 256; i++) s->cftab[i] += s->cftab[i-1];
|
||||||
|
/* Check: cftab entries in range. */
|
||||||
for (i = 0; i <= 256; i++) {
|
for (i = 0; i <= 256; i++) {
|
||||||
if (s->cftab[i] < 0 || s->cftab[i] > nblock) {
|
if (s->cftab[i] < 0 || s->cftab[i] > nblock) {
|
||||||
/* s->cftab[i] can legitimately be == nblock */
|
/* s->cftab[i] can legitimately be == nblock */
|
||||||
RETURN(BZ_DATA_ERROR);
|
RETURN(BZ_DATA_ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/* Check: cftab entries non-descending. */
|
||||||
|
for (i = 1; i <= 256; i++) {
|
||||||
|
if (s->cftab[i-1] > s->cftab[i]) {
|
||||||
|
RETURN(BZ_DATA_ERROR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
s->state_out_len = 0;
|
s->state_out_len = 0;
|
||||||
s->state_out_ch = 0;
|
s->state_out_ch = 0;
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,8 @@
|
||||||
This file is part of bzip2/libbzip2, a program and library for
|
This file is part of bzip2/libbzip2, a program and library for
|
||||||
lossless, block-sorting data compression.
|
lossless, block-sorting data compression.
|
||||||
|
|
||||||
bzip2/libbzip2 version 1.0.5 of 10 December 2007
|
bzip2/libbzip2 version 1.0.8 of 13 July 2019
|
||||||
Copyright (C) 1996-2007 Julian Seward <jseward@bzip.org>
|
Copyright (C) 1996-2019 Julian Seward <jseward@acm.org>
|
||||||
|
|
||||||
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||||
README file.
|
README file.
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,8 @@
|
||||||
This file is part of bzip2/libbzip2, a program and library for
|
This file is part of bzip2/libbzip2, a program and library for
|
||||||
lossless, block-sorting data compression.
|
lossless, block-sorting data compression.
|
||||||
|
|
||||||
bzip2/libbzip2 version 1.0.5 of 10 December 2007
|
bzip2/libbzip2 version 1.0.8 of 13 July 2019
|
||||||
Copyright (C) 1996-2007 Julian Seward <jseward@bzip.org>
|
Copyright (C) 1996-2019 Julian Seward <jseward@acm.org>
|
||||||
|
|
||||||
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||||
README file.
|
README file.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue