Compare commits
6
Commits
zstd-0.2.0
...
zstd-0.2.2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d1661056e4 | ||
|
|
08cbf3dbbf | ||
|
|
64e491e688 | ||
|
|
9e618350d4 | ||
|
|
3e8fbabfa8 | ||
|
|
40603ffb24 |
@@ -32,7 +32,7 @@
|
|||||||
# ################################################################
|
# ################################################################
|
||||||
|
|
||||||
# Version number
|
# Version number
|
||||||
export VERSION := 0.2.0
|
export VERSION := 0.2.2
|
||||||
|
|
||||||
PRGDIR = programs
|
PRGDIR = programs
|
||||||
ZSTDDIR = lib
|
ZSTDDIR = lib
|
||||||
|
|||||||
@@ -1,3 +1,9 @@
|
|||||||
|
v0.2.2
|
||||||
|
Fix : Visual Studio 2013 & 2015 release compilation, by Christophe Chevalier
|
||||||
|
|
||||||
|
v0.2.2
|
||||||
|
Fix : Read errors, advanced fuzzer tests, by Hanno Böck
|
||||||
|
|
||||||
v0.2.0
|
v0.2.0
|
||||||
**Breaking format change**
|
**Breaking format change**
|
||||||
Faster decompression speed
|
Faster decompression speed
|
||||||
|
|||||||
+1
-1
@@ -32,11 +32,11 @@
|
|||||||
# ################################################################
|
# ################################################################
|
||||||
|
|
||||||
# Version numbers
|
# Version numbers
|
||||||
VERSION?= 0.1.2
|
|
||||||
LIBVER_MAJOR=`sed -n '/define ZSTD_VERSION_MAJOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < zstd.h`
|
LIBVER_MAJOR=`sed -n '/define ZSTD_VERSION_MAJOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < zstd.h`
|
||||||
LIBVER_MINOR=`sed -n '/define ZSTD_VERSION_MINOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < zstd.h`
|
LIBVER_MINOR=`sed -n '/define ZSTD_VERSION_MINOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < zstd.h`
|
||||||
LIBVER_PATCH=`sed -n '/define ZSTD_VERSION_RELEASE/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < zstd.h`
|
LIBVER_PATCH=`sed -n '/define ZSTD_VERSION_RELEASE/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < zstd.h`
|
||||||
LIBVER = $(LIBVER_MAJOR).$(LIBVER_MINOR).$(LIBVER_PATCH)
|
LIBVER = $(LIBVER_MAJOR).$(LIBVER_MINOR).$(LIBVER_PATCH)
|
||||||
|
VERSION?= $(LIBVER)
|
||||||
|
|
||||||
DESTDIR?=
|
DESTDIR?=
|
||||||
PREFIX ?= /usr/local
|
PREFIX ?= /usr/local
|
||||||
|
|||||||
+23
-11
@@ -602,6 +602,7 @@ static size_t HUF_readStats(BYTE* huffWeight, size_t hwSize, U32* rankStats,
|
|||||||
|
|
||||||
/* get last non-null symbol weight (implied, total must be 2^n) */
|
/* get last non-null symbol weight (implied, total must be 2^n) */
|
||||||
tableLog = BIT_highbit32(weightTotal) + 1;
|
tableLog = BIT_highbit32(weightTotal) + 1;
|
||||||
|
if (tableLog > HUF_ABSOLUTEMAX_TABLELOG) return ERROR(corruption_detected);
|
||||||
{
|
{
|
||||||
U32 total = 1 << tableLog;
|
U32 total = 1 << tableLog;
|
||||||
U32 rest = total - weightTotal;
|
U32 rest = total - weightTotal;
|
||||||
@@ -1016,24 +1017,29 @@ size_t HUF_readDTableX4 (U32* DTable, const void* src, size_t srcSize)
|
|||||||
rankStart[0] = 0; /* forget 0w symbols; this is beginning of weight(1) */
|
rankStart[0] = 0; /* forget 0w symbols; this is beginning of weight(1) */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Build rankVal */
|
/* Build rankVal */
|
||||||
{
|
{
|
||||||
const U32 minBits = tableLog+1 - maxW;
|
const U32 minBits = tableLog+1 - maxW;
|
||||||
U32 nextRankVal = 0;
|
U32 nextRankVal = 0;
|
||||||
U32 w, consumed;
|
U32 w, consumed;
|
||||||
const int rescale = (memLog-tableLog) - 1; /* tableLog <= memLog */
|
const int rescale = (memLog-tableLog) - 1; /* tableLog <= memLog */
|
||||||
|
U32* rankVal0 = rankVal[0];
|
||||||
for (w=1; w<=maxW; w++)
|
for (w=1; w<=maxW; w++)
|
||||||
{
|
{
|
||||||
U32 current = nextRankVal;
|
U32 current = nextRankVal;
|
||||||
nextRankVal += rankStats[w] << (w+rescale);
|
nextRankVal += rankStats[w] << (w+rescale);
|
||||||
rankVal[0][w] = current;
|
rankVal0[w] = current;
|
||||||
|
}
|
||||||
|
for (consumed = minBits; consumed <= memLog - minBits; consumed++)
|
||||||
|
{
|
||||||
|
U32* rankValPtr = rankVal[consumed];
|
||||||
|
for (w = 1; w <= maxW; w++)
|
||||||
|
{
|
||||||
|
rankValPtr[w] = rankVal0[w] >> consumed;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
for (consumed=minBits; consumed <= memLog-minBits; consumed++)
|
|
||||||
for (w=1; w<=maxW; w++)
|
|
||||||
rankVal[consumed][w] = rankVal[0][w] >> consumed;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
HUF_fillDTableX4(dt, memLog,
|
HUF_fillDTableX4(dt, memLog,
|
||||||
sortedSymbol, sizeOfSort,
|
sortedSymbol, sizeOfSort,
|
||||||
rankStart0, rankVal, maxW,
|
rankStart0, rankVal, maxW,
|
||||||
@@ -1383,21 +1389,27 @@ size_t HUF_readDTableX6 (U32* DTable, const void* src, size_t srcSize)
|
|||||||
rankStart[0] = 0; /* forget 0w symbols; this is beginning of weight(1) */
|
rankStart[0] = 0; /* forget 0w symbols; this is beginning of weight(1) */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Build rankVal */
|
/* Build rankVal */
|
||||||
{
|
{
|
||||||
const U32 minBits = tableLog+1 - maxW;
|
const U32 minBits = tableLog+1 - maxW;
|
||||||
U32 nextRankVal = 0;
|
U32 nextRankVal = 0;
|
||||||
U32 w, consumed;
|
U32 w, consumed;
|
||||||
const int rescale = (memLog-tableLog) - 1; /* tableLog <= memLog */
|
const int rescale = (memLog-tableLog) - 1; /* tableLog <= memLog */
|
||||||
|
U32* rankVal0 = rankVal[0];
|
||||||
for (w=1; w<=maxW; w++)
|
for (w=1; w<=maxW; w++)
|
||||||
{
|
{
|
||||||
U32 current = nextRankVal;
|
U32 current = nextRankVal;
|
||||||
nextRankVal += rankStats[w] << (w+rescale);
|
nextRankVal += rankStats[w] << (w+rescale);
|
||||||
rankVal[0][w] = current;
|
rankVal0[w] = current;
|
||||||
|
}
|
||||||
|
for (consumed = minBits; consumed <= memLog - minBits; consumed++)
|
||||||
|
{
|
||||||
|
U32* rankValPtr = rankVal[consumed];
|
||||||
|
for (w = 1; w <= maxW; w++)
|
||||||
|
{
|
||||||
|
rankValPtr[w] = rankVal0[w] >> consumed;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
for (consumed=minBits; consumed <= memLog-minBits; consumed++)
|
|
||||||
for (w=1; w<=maxW; w++)
|
|
||||||
rankVal[consumed][w] = rankVal[0][w] >> consumed;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+15
-7
@@ -1031,7 +1031,7 @@ struct ZSTD_DCtx_s
|
|||||||
const BYTE* litPtr;
|
const BYTE* litPtr;
|
||||||
size_t litBufSize;
|
size_t litBufSize;
|
||||||
size_t litSize;
|
size_t litSize;
|
||||||
BYTE litBuffer[BLOCKSIZE];
|
BYTE litBuffer[BLOCKSIZE + 8 /* margin for wildcopy */];
|
||||||
}; /* typedef'd to ZSTD_Dctx within "zstd_static.h" */
|
}; /* typedef'd to ZSTD_Dctx within "zstd_static.h" */
|
||||||
|
|
||||||
|
|
||||||
@@ -1098,17 +1098,25 @@ size_t ZSTD_decodeLiteralsBlock(void* ctx,
|
|||||||
default:
|
default:
|
||||||
case 0:
|
case 0:
|
||||||
{
|
{
|
||||||
size_t nbLiterals = BLOCKSIZE;
|
size_t litSize = BLOCKSIZE;
|
||||||
const size_t readSize = ZSTD_decompressLiterals(dctx->litBuffer, &nbLiterals, src, srcSize);
|
const size_t readSize = ZSTD_decompressLiterals(dctx->litBuffer, &litSize, src, srcSize);
|
||||||
dctx->litPtr = dctx->litBuffer;
|
dctx->litPtr = dctx->litBuffer;
|
||||||
dctx->litBufSize = BLOCKSIZE;
|
dctx->litBufSize = BLOCKSIZE;
|
||||||
dctx->litSize = nbLiterals;
|
dctx->litSize = litSize;
|
||||||
return readSize; /* works if it's an error too */
|
return readSize; /* works if it's an error too */
|
||||||
}
|
}
|
||||||
case IS_RAW:
|
case IS_RAW:
|
||||||
{
|
{
|
||||||
const size_t litSize = (MEM_readLE32(istart) & 0xFFFFFF) >> 2; /* no buffer issue : srcSize >= MIN_CBLOCK_SIZE */
|
const size_t litSize = (MEM_readLE32(istart) & 0xFFFFFF) >> 2; /* no buffer issue : srcSize >= MIN_CBLOCK_SIZE */
|
||||||
if (litSize > srcSize-3) return ERROR(corruption_detected);
|
if (litSize > srcSize-11) /* risk of reading too far with wildcopy */
|
||||||
|
{
|
||||||
|
if (litSize > srcSize-3) return ERROR(corruption_detected);
|
||||||
|
memcpy(dctx->litBuffer, istart, litSize);
|
||||||
|
dctx->litBufSize = BLOCKSIZE;
|
||||||
|
dctx->litSize = litSize;
|
||||||
|
return litSize+3;
|
||||||
|
}
|
||||||
|
/* direct reference into compressed stream */
|
||||||
dctx->litPtr = istart+3;
|
dctx->litPtr = istart+3;
|
||||||
dctx->litBufSize = srcSize-3;
|
dctx->litBufSize = srcSize-3;
|
||||||
dctx->litSize = litSize;
|
dctx->litSize = litSize;
|
||||||
@@ -1328,10 +1336,10 @@ static size_t ZSTD_execSequence(BYTE* op,
|
|||||||
BYTE* const oend_8 = oend-8;
|
BYTE* const oend_8 = oend-8;
|
||||||
const BYTE* const litEnd = *litPtr + sequence.litLength;
|
const BYTE* const litEnd = *litPtr + sequence.litLength;
|
||||||
|
|
||||||
/* check */
|
/* checks */
|
||||||
if (oLitEnd > oend_8) return ERROR(dstSize_tooSmall); /* last match must start at a minimum distance of 8 from oend */
|
if (oLitEnd > oend_8) return ERROR(dstSize_tooSmall); /* last match must start at a minimum distance of 8 from oend */
|
||||||
if (oMatchEnd > oend) return ERROR(dstSize_tooSmall); /* overwrite beyond dst buffer */
|
if (oMatchEnd > oend) return ERROR(dstSize_tooSmall); /* overwrite beyond dst buffer */
|
||||||
if (litEnd > litLimit) return ERROR(corruption_detected); /* overRead beyond lit buffer */
|
if (litEnd > litLimit-8) return ERROR(corruption_detected); /* overRead beyond lit buffer */
|
||||||
|
|
||||||
/* copy Literals */
|
/* copy Literals */
|
||||||
ZSTD_wildcopy(op, *litPtr, sequence.litLength); /* note : oLitEnd <= oend-8 : no risk of overwrite beyond oend */
|
ZSTD_wildcopy(op, *litPtr, sequence.litLength); /* note : oLitEnd <= oend-8 : no risk of overwrite beyond oend */
|
||||||
|
|||||||
+1
-1
@@ -47,7 +47,7 @@ extern "C" {
|
|||||||
***************************************/
|
***************************************/
|
||||||
#define ZSTD_VERSION_MAJOR 0 /* for breaking interface changes */
|
#define ZSTD_VERSION_MAJOR 0 /* for breaking interface changes */
|
||||||
#define ZSTD_VERSION_MINOR 2 /* for new (non-breaking) interface capabilities */
|
#define ZSTD_VERSION_MINOR 2 /* for new (non-breaking) interface capabilities */
|
||||||
#define ZSTD_VERSION_RELEASE 0 /* for tweaks, bug-fixes, or development */
|
#define ZSTD_VERSION_RELEASE 2 /* for tweaks, bug-fixes, or development */
|
||||||
#define ZSTD_VERSION_NUMBER (ZSTD_VERSION_MAJOR *100*100 + ZSTD_VERSION_MINOR *100 + ZSTD_VERSION_RELEASE)
|
#define ZSTD_VERSION_NUMBER (ZSTD_VERSION_MAJOR *100*100 + ZSTD_VERSION_MINOR *100 + ZSTD_VERSION_RELEASE)
|
||||||
unsigned ZSTD_versionNumber (void);
|
unsigned ZSTD_versionNumber (void);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user