diff --git a/programs/util.c b/programs/util.c index dbdd1cee..2249e451 100644 --- a/programs/util.c +++ b/programs/util.c @@ -328,7 +328,6 @@ UTIL_createFileList(const char **inputNames, unsigned inputNamesNb, unsigned i, nbFiles; char* buf = (char*)malloc(LIST_SIZE_INCREASE); char* bufend = buf + LIST_SIZE_INCREASE; - const char** fileTable; if (!buf) return NULL; @@ -343,7 +342,7 @@ UTIL_createFileList(const char **inputNames, unsigned inputNamesNb, if (!buf) return NULL; } if (buf + pos + len < bufend) { - memcpy(buf+pos, inputNames[i], len+1); /* with final \0 */ + memcpy(buf+pos, inputNames[i], len+1); /* including final \0 */ pos += len + 1; nbFiles++; } @@ -354,20 +353,20 @@ UTIL_createFileList(const char **inputNames, unsigned inputNamesNb, if (nbFiles == 0) { free(buf); return NULL; } - fileTable = (const char**)malloc((nbFiles+1) * sizeof(const char*)); - if (!fileTable) { free(buf); return NULL; } + { const char** const fileTable = (const char**)malloc((nbFiles + 1) * sizeof(*fileTable)); + if (!fileTable) { free(buf); return NULL; } - for (i=0, pos=0; i bufend) { free(buf); free((void*)fileTable); return NULL; } + pos += strlen(fileTable[i]) + 1; + } + + *allocatedBuffer = buf; + *allocatedNamesNb = nbFiles; + + return fileTable; } - - if (buf + pos > bufend) { free(buf); free((void*)fileTable); return NULL; } - - *allocatedBuffer = buf; - *allocatedNamesNb = nbFiles; - - return fileTable; } diff --git a/tests/playTests.sh b/tests/playTests.sh index f63a7f69..80f36d52 100755 --- a/tests/playTests.sh +++ b/tests/playTests.sh @@ -240,7 +240,7 @@ rm tmp # erase source file touch tmp.zst # create destination file $ZSTD -f tmp && die "attempt to compress a non existing file" test -f tmp.zst # destination file should still be present -rm tmp* +rm -rf tmp* # may also erase tmp* directory from previous failed run println "\n===> decompression only tests " head -c 1048576 /dev/zero > tmp @@ -284,7 +284,7 @@ test -f tmpOutDir/tmp1.zst test -f tmpOutDir/tmp2.zst println "test : decompress multiple files into an output directory, --output-dir-flat" mkdir tmpOutDirDecomp -$ZSTD tmpOutDir/ -r -d --output-dir-flat tmpOutDirDecomp +$ZSTD tmpOutDir -r -d --output-dir-flat tmpOutDirDecomp test -f tmpOutDirDecomp/tmp2 test -f tmpOutDirDecomp/tmp1 rm -rf tmp*