Addressing comments

This commit is contained in:
Bimba Shrestha 2019-09-19 15:25:20 -07:00
parent 3cacc0a30b
commit ae6d0e64ae
2 changed files with 18 additions and 11 deletions

View File

@ -2302,7 +2302,7 @@ static void ZSTD_copyBlockSequences(ZSTD_CCtx* zc)
} }
assert(repIdx >= -3); assert(repIdx >= -3);
outSeqs[i].offset = repIdx >= 0 ? outSeqs[repIdx].offset : repStartValue[-repIdx - 1]; outSeqs[i].offset = repIdx >= 0 ? outSeqs[repIdx].offset : repStartValue[-repIdx - 1];
if (outSeqs[i].offset == 4) { if (outSeqs[i].rep == 4) {
--outSeqs[i].offset; --outSeqs[i].offset;
} }
} else { } else {
@ -2319,9 +2319,6 @@ static void ZSTD_copyBlockSequences(ZSTD_CCtx* zc)
size_t ZSTD_getSequences(ZSTD_CCtx* zc, ZSTD_Sequence* outSeqs, size_t ZSTD_getSequences(ZSTD_CCtx* zc, ZSTD_Sequence* outSeqs,
size_t outSeqsSize, const void* src, size_t srcSize) size_t outSeqsSize, const void* src, size_t srcSize)
{ {
const size_t dstCapacity = ZSTD_compressBound(srcSize * sizeof(void*));
void* dst = ZSTD_malloc(dstCapacity, ZSTD_defaultCMem);
SeqCollector seqCollector; SeqCollector seqCollector;
seqCollector.collectSequences = 1; seqCollector.collectSequences = 1;
seqCollector.seqStart = outSeqs; seqCollector.seqStart = outSeqs;
@ -2329,8 +2326,8 @@ size_t ZSTD_getSequences(ZSTD_CCtx* zc, ZSTD_Sequence* outSeqs,
seqCollector.maxSequences = outSeqsSize; seqCollector.maxSequences = outSeqsSize;
zc->seqCollector = seqCollector; zc->seqCollector = seqCollector;
ZSTD_compress2(zc, dst, dstCapacity, src, srcSize); /* We never write to dst when collecing sequences so setting dst = src is harmless */
ZSTD_free(dst, ZSTD_defaultCMem); ZSTD_compress2(zc, (void*)src, srcSize, src, srcSize);
return zc->seqCollector.seqIndex; return zc->seqCollector.seqIndex;
} }

View File

@ -1078,11 +1078,21 @@ ZSTDLIB_API size_t ZSTD_sizeof_DDict(const ZSTD_DDict* ddict);
typedef struct ZSTD_CCtx_params_s ZSTD_CCtx_params; typedef struct ZSTD_CCtx_params_s ZSTD_CCtx_params;
typedef struct { typedef struct {
unsigned int matchPos; /* match pos in dst */ unsigned int matchPos; /* Match pos in dst */
unsigned int offset; /* offset taking into account rep (different from seqdef) */ /* If seqDef.offset > 3, then this is seqDef.offset - 3
unsigned int litLength; /* literal length */ * If seqDef.offset < 3, then this is the corresponding repeat offset
unsigned int matchLength; /* match length */ * But if seqDef.offset < 3 and litLength == 0, this is the
unsigned int rep; /* 0 when seq not rep and seqDef.offset otherwise */ * repeat offset before the corresponding repeat offset
* And if seqDef.offset == 3 and litLength == 0, this is the
* most recent repeat offset - 1
*/
unsigned int offset;
unsigned int litLength; /* Literal length */
unsigned int matchLength; /* Match length */
/* 0 when seq not rep and seqDef.offset otherwise
* when litLength == 0 this will be <= 4, otherwise <= 3 like normal
*/
unsigned int rep;
} ZSTD_Sequence; } ZSTD_Sequence;
typedef struct { typedef struct {