fixed more issues detected by recent version of scan-build
test run on Linux
This commit is contained in:
parent
31224cc126
commit
1515f0bb0d
@ -158,7 +158,8 @@ int main(int argc, const char** argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
freeResources(ress);
|
freeResources(ress);
|
||||||
/* success */
|
free(ofnBuffer);
|
||||||
|
|
||||||
printf("compressed %i files \n", argc-1);
|
printf("compressed %i files \n", argc-1);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -73,7 +73,11 @@ static void compressFile_orDie(const char* fname, const char* outName, int cLeve
|
|||||||
ZSTD_CStream* const cstream = ZSTD_createCStream();
|
ZSTD_CStream* const cstream = ZSTD_createCStream();
|
||||||
if (cstream==NULL) { fprintf(stderr, "ZSTD_createCStream() error \n"); exit(10); }
|
if (cstream==NULL) { fprintf(stderr, "ZSTD_createCStream() error \n"); exit(10); }
|
||||||
size_t const initResult = ZSTD_initCStream(cstream, cLevel);
|
size_t const initResult = ZSTD_initCStream(cstream, cLevel);
|
||||||
if (ZSTD_isError(initResult)) { fprintf(stderr, "ZSTD_initCStream() error : %s \n", ZSTD_getErrorName(initResult)); exit(11); }
|
if (ZSTD_isError(initResult)) {
|
||||||
|
fprintf(stderr, "ZSTD_initCStream() error : %s \n",
|
||||||
|
ZSTD_getErrorName(initResult));
|
||||||
|
exit(11);
|
||||||
|
}
|
||||||
|
|
||||||
size_t read, toRead = buffInSize;
|
size_t read, toRead = buffInSize;
|
||||||
while( (read = fread_orDie(buffIn, toRead, fin)) ) {
|
while( (read = fread_orDie(buffIn, toRead, fin)) ) {
|
||||||
@ -81,7 +85,11 @@ static void compressFile_orDie(const char* fname, const char* outName, int cLeve
|
|||||||
while (input.pos < input.size) {
|
while (input.pos < input.size) {
|
||||||
ZSTD_outBuffer output = { buffOut, buffOutSize, 0 };
|
ZSTD_outBuffer output = { buffOut, buffOutSize, 0 };
|
||||||
toRead = ZSTD_compressStream(cstream, &output , &input); /* toRead is guaranteed to be <= ZSTD_CStreamInSize() */
|
toRead = ZSTD_compressStream(cstream, &output , &input); /* toRead is guaranteed to be <= ZSTD_CStreamInSize() */
|
||||||
if (ZSTD_isError(toRead)) { fprintf(stderr, "ZSTD_compressStream() error : %s \n", ZSTD_getErrorName(toRead)); exit(12); }
|
if (ZSTD_isError(toRead)) {
|
||||||
|
fprintf(stderr, "ZSTD_compressStream() error : %s \n",
|
||||||
|
ZSTD_getErrorName(toRead));
|
||||||
|
exit(12);
|
||||||
|
}
|
||||||
if (toRead > buffInSize) toRead = buffInSize; /* Safely handle case when `buffInSize` is manually changed to a value < ZSTD_CStreamInSize()*/
|
if (toRead > buffInSize) toRead = buffInSize; /* Safely handle case when `buffInSize` is manually changed to a value < ZSTD_CStreamInSize()*/
|
||||||
fwrite_orDie(buffOut, output.pos, fout);
|
fwrite_orDie(buffOut, output.pos, fout);
|
||||||
}
|
}
|
||||||
@ -100,15 +108,15 @@ static void compressFile_orDie(const char* fname, const char* outName, int cLeve
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static const char* createOutFilename_orDie(const char* filename)
|
static char* createOutFilename_orDie(const char* filename)
|
||||||
{
|
{
|
||||||
size_t const inL = strlen(filename);
|
size_t const inL = strlen(filename);
|
||||||
size_t const outL = inL + 5;
|
size_t const outL = inL + 5;
|
||||||
void* outSpace = malloc_orDie(outL);
|
void* const outSpace = malloc_orDie(outL);
|
||||||
memset(outSpace, 0, outL);
|
memset(outSpace, 0, outL);
|
||||||
strcat(outSpace, filename);
|
strcat(outSpace, filename);
|
||||||
strcat(outSpace, ".zst");
|
strcat(outSpace, ".zst");
|
||||||
return (const char*)outSpace;
|
return (char*)outSpace;
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, const char** argv)
|
int main(int argc, const char** argv)
|
||||||
@ -124,8 +132,10 @@ int main(int argc, const char** argv)
|
|||||||
|
|
||||||
const char* const inFilename = argv[1];
|
const char* const inFilename = argv[1];
|
||||||
|
|
||||||
const char* const outFilename = createOutFilename_orDie(inFilename);
|
char* const outFilename = createOutFilename_orDie(inFilename);
|
||||||
compressFile_orDie(inFilename, outFilename, 1);
|
compressFile_orDie(inFilename, outFilename, 1);
|
||||||
|
|
||||||
|
free(outFilename); /* not strictly required, since program execution stops there,
|
||||||
|
* but some static analyzer main complain otherwise */
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -240,10 +240,12 @@ FSE_writeNCount_generic (void* header, size_t headerBufferSize,
|
|||||||
if (previousIs0) {
|
if (previousIs0) {
|
||||||
unsigned start = symbol;
|
unsigned start = symbol;
|
||||||
while ((symbol < alphabetSize) && !normalizedCounter[symbol]) symbol++;
|
while ((symbol < alphabetSize) && !normalizedCounter[symbol]) symbol++;
|
||||||
|
if (symbol == alphabetSize) break; /* incorrect distribution */
|
||||||
while (symbol >= start+24) {
|
while (symbol >= start+24) {
|
||||||
start+=24;
|
start+=24;
|
||||||
bitStream += 0xFFFFU << bitCount;
|
bitStream += 0xFFFFU << bitCount;
|
||||||
if ((!writeIsSafe) && (out > oend-2)) return ERROR(dstSize_tooSmall); /* Buffer overflow */
|
if ((!writeIsSafe) && (out > oend-2))
|
||||||
|
return ERROR(dstSize_tooSmall); /* Buffer overflow */
|
||||||
out[0] = (BYTE) bitStream;
|
out[0] = (BYTE) bitStream;
|
||||||
out[1] = (BYTE)(bitStream>>8);
|
out[1] = (BYTE)(bitStream>>8);
|
||||||
out+=2;
|
out+=2;
|
||||||
@ -257,7 +259,8 @@ FSE_writeNCount_generic (void* header, size_t headerBufferSize,
|
|||||||
bitStream += (symbol-start) << bitCount;
|
bitStream += (symbol-start) << bitCount;
|
||||||
bitCount += 2;
|
bitCount += 2;
|
||||||
if (bitCount>16) {
|
if (bitCount>16) {
|
||||||
if ((!writeIsSafe) && (out > oend - 2)) return ERROR(dstSize_tooSmall); /* Buffer overflow */
|
if ((!writeIsSafe) && (out > oend - 2))
|
||||||
|
return ERROR(dstSize_tooSmall); /* Buffer overflow */
|
||||||
out[0] = (BYTE)bitStream;
|
out[0] = (BYTE)bitStream;
|
||||||
out[1] = (BYTE)(bitStream>>8);
|
out[1] = (BYTE)(bitStream>>8);
|
||||||
out += 2;
|
out += 2;
|
||||||
@ -268,7 +271,8 @@ FSE_writeNCount_generic (void* header, size_t headerBufferSize,
|
|||||||
int const max = (2*threshold-1) - remaining;
|
int const max = (2*threshold-1) - remaining;
|
||||||
remaining -= count < 0 ? -count : count;
|
remaining -= count < 0 ? -count : count;
|
||||||
count++; /* +1 for extra accuracy */
|
count++; /* +1 for extra accuracy */
|
||||||
if (count>=threshold) count += max; /* [0..max[ [max..threshold[ (...) [threshold+max 2*threshold[ */
|
if (count>=threshold)
|
||||||
|
count += max; /* [0..max[ [max..threshold[ (...) [threshold+max 2*threshold[ */
|
||||||
bitStream += count << bitCount;
|
bitStream += count << bitCount;
|
||||||
bitCount += nbBits;
|
bitCount += nbBits;
|
||||||
bitCount -= (count<max);
|
bitCount -= (count<max);
|
||||||
@ -277,7 +281,8 @@ FSE_writeNCount_generic (void* header, size_t headerBufferSize,
|
|||||||
while (remaining<threshold) { nbBits--; threshold>>=1; }
|
while (remaining<threshold) { nbBits--; threshold>>=1; }
|
||||||
}
|
}
|
||||||
if (bitCount>16) {
|
if (bitCount>16) {
|
||||||
if ((!writeIsSafe) && (out > oend - 2)) return ERROR(dstSize_tooSmall); /* Buffer overflow */
|
if ((!writeIsSafe) && (out > oend - 2))
|
||||||
|
return ERROR(dstSize_tooSmall); /* Buffer overflow */
|
||||||
out[0] = (BYTE)bitStream;
|
out[0] = (BYTE)bitStream;
|
||||||
out[1] = (BYTE)(bitStream>>8);
|
out[1] = (BYTE)(bitStream>>8);
|
||||||
out += 2;
|
out += 2;
|
||||||
@ -285,11 +290,13 @@ FSE_writeNCount_generic (void* header, size_t headerBufferSize,
|
|||||||
bitCount -= 16;
|
bitCount -= 16;
|
||||||
} }
|
} }
|
||||||
|
|
||||||
if (remaining != 1) return ERROR(GENERIC); /* incorrect normalized distribution */
|
if (remaining != 1)
|
||||||
|
return ERROR(GENERIC); /* incorrect normalized distribution */
|
||||||
assert(symbol <= alphabetSize);
|
assert(symbol <= alphabetSize);
|
||||||
|
|
||||||
/* flush remaining bitStream */
|
/* flush remaining bitStream */
|
||||||
if ((!writeIsSafe) && (out > oend - 2)) return ERROR(dstSize_tooSmall); /* Buffer overflow */
|
if ((!writeIsSafe) && (out > oend - 2))
|
||||||
|
return ERROR(dstSize_tooSmall); /* Buffer overflow */
|
||||||
out[0] = (BYTE)bitStream;
|
out[0] = (BYTE)bitStream;
|
||||||
out[1] = (BYTE)(bitStream>>8);
|
out[1] = (BYTE)(bitStream>>8);
|
||||||
out+= (bitCount+7) /8;
|
out+= (bitCount+7) /8;
|
||||||
@ -298,7 +305,8 @@ FSE_writeNCount_generic (void* header, size_t headerBufferSize,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
size_t FSE_writeNCount (void* buffer, size_t bufferSize, const short* normalizedCounter, unsigned maxSymbolValue, unsigned tableLog)
|
size_t FSE_writeNCount (void* buffer, size_t bufferSize,
|
||||||
|
const short* normalizedCounter, unsigned maxSymbolValue, unsigned tableLog)
|
||||||
{
|
{
|
||||||
if (tableLog > FSE_MAX_TABLELOG) return ERROR(tableLog_tooLarge); /* Unsupported */
|
if (tableLog > FSE_MAX_TABLELOG) return ERROR(tableLog_tooLarge); /* Unsupported */
|
||||||
if (tableLog < FSE_MIN_TABLELOG) return ERROR(GENERIC); /* Unsupported */
|
if (tableLog < FSE_MIN_TABLELOG) return ERROR(GENERIC); /* Unsupported */
|
||||||
|
@ -1637,7 +1637,7 @@ construct_SA(const unsigned char *T, int *SA,
|
|||||||
if(0 <= c2) { BUCKET_B(c2, c1) = k - SA; }
|
if(0 <= c2) { BUCKET_B(c2, c1) = k - SA; }
|
||||||
k = SA + BUCKET_B(c2 = c0, c1);
|
k = SA + BUCKET_B(c2 = c0, c1);
|
||||||
}
|
}
|
||||||
assert(k < j);
|
assert(k < j); assert(k != NULL);
|
||||||
*k-- = s;
|
*k-- = s;
|
||||||
} else {
|
} else {
|
||||||
assert(((s == 0) && (T[s] == c1)) || (s < 0));
|
assert(((s == 0) && (T[s] == c1)) || (s < 0));
|
||||||
@ -1701,7 +1701,7 @@ construct_BWT(const unsigned char *T, int *SA,
|
|||||||
if(0 <= c2) { BUCKET_B(c2, c1) = k - SA; }
|
if(0 <= c2) { BUCKET_B(c2, c1) = k - SA; }
|
||||||
k = SA + BUCKET_B(c2 = c0, c1);
|
k = SA + BUCKET_B(c2 = c0, c1);
|
||||||
}
|
}
|
||||||
assert(k < j);
|
assert(k < j); assert(k != NULL);
|
||||||
*k-- = s;
|
*k-- = s;
|
||||||
} else if(s != 0) {
|
} else if(s != 0) {
|
||||||
*j = ~s;
|
*j = ~s;
|
||||||
@ -1785,7 +1785,7 @@ construct_BWT_indexes(const unsigned char *T, int *SA,
|
|||||||
if(0 <= c2) { BUCKET_B(c2, c1) = k - SA; }
|
if(0 <= c2) { BUCKET_B(c2, c1) = k - SA; }
|
||||||
k = SA + BUCKET_B(c2 = c0, c1);
|
k = SA + BUCKET_B(c2 = c0, c1);
|
||||||
}
|
}
|
||||||
assert(k < j);
|
assert(k < j); assert(k != NULL);
|
||||||
*k-- = s;
|
*k-- = s;
|
||||||
} else if(s != 0) {
|
} else if(s != 0) {
|
||||||
*j = ~s;
|
*j = ~s;
|
||||||
|
Loading…
Reference in New Issue
Block a user