From: Yann Collet Date: Fri, 18 Oct 2019 21:28:34 +0000 (-0700) Subject: fix test on windows X-Git-Tag: v1.4.4~1^2~23^2~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=29e46ed0bd1b206a3eb8c0f65a9c3399cfc6dfea;p=thirdparty%2Fzstd.git fix test on windows isDirectory() doesn't work on Windows if directory name is followed by '/' --- diff --git a/programs/util.c b/programs/util.c index dbdd1cee4..2249e4513 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; } + for (i = 0, pos = 0; i < nbFiles; i++) { + fileTable[i] = buf + pos; + if (buf + pos > bufend) { free(buf); free((void*)fileTable); return NULL; } + pos += strlen(fileTable[i]) + 1; + } - *allocatedBuffer = buf; - *allocatedNamesNb = nbFiles; + *allocatedBuffer = buf; + *allocatedNamesNb = nbFiles; - return fileTable; + return fileTable; + } } diff --git a/tests/playTests.sh b/tests/playTests.sh index f63a7f69e..80f36d52e 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*