]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
fixes for tests and segfault
authorSen Huang <senhuang96@fb.com>
Fri, 6 Sep 2019 18:10:53 +0000 (11:10 -0700)
committerSen Huang <senhuang96@fb.com>
Fri, 6 Sep 2019 18:10:53 +0000 (11:10 -0700)
programs/fileio.c
programs/fileio.h
programs/util.c
programs/util.h
programs/zstdcli.c

index 194ea85c4e7a75c5c697e8009897edd548166c13..cc8809f9464eb98987aa7eab3effed522bd1c360 100644 (file)
@@ -1453,7 +1453,9 @@ int FIO_compressMultipleFilenames(FIO_prefs_t* const prefs, const char** inFileN
     }   }
 
     FIO_freeCResources(ress);
-    UTIL_freeDestinationFilenameTable(dstFileNamesTable, nbFiles);
+    if (outDirName)
+        UTIL_freeDestinationFilenameTable(dstFileNamesTable, nbFiles);
+        
     return error;
 }
 
@@ -2274,22 +2276,10 @@ FIO_decompressMultipleFilenames(FIO_prefs_t* const prefs,
     }
 
     FIO_freeDResources(ress);
-    UTIL_freeDestinationFilenameTable(dstFileNamesTable, nbFiles);
-    return error;
-}
-
-void FIO_processMultipleFilenameDestinationDir(char** dstFilenameTable,
-                                              const char** filenameTable, unsigned filenameIdx,
-                                              const char* outFileName, const char* outDirName) {
-    int dirResult;
-    dirResult = UTIL_createDir(outDirName);
-    if (dirResult)
-        DISPLAY("Directory creation unsuccessful \n");
+    if (outDirName)
+        UTIL_freeDestinationFilenameTable(dstFileNamesTable, nbFiles);
 
-    UTIL_createDestinationDirTable(filenameTable, filenameIdx, outDirName, dstFilenameTable);
-    if (outFileName) {
-        outFileName = dstFilenameTable[0]; /* in case -O is called with single file */
-    }
+    return error;
 }
 
 /* **************************************************************************
index 1b435c5f35e54a4bc3075b5931f9afaed0d9131b..40cd8985f1ef42a4d9bbeb804ff97023c347e9d1 100644 (file)
@@ -118,10 +118,6 @@ int FIO_decompressMultipleFilenames(FIO_prefs_t* const prefs,
                                     const char* outFileName,
                                     const char* dictFileName);
 
-void FIO_processMultipleFilenameDestinationDir(char** dstFilenameTable,
-                                              const char** filenameTable, unsigned filenameIdx,
-                                              const char* outFileName, const char* outDirName);
-
 
 /*-*************************************
 *  Advanced stuff (should actually be hosted elsewhere)
index 3b134f9cd43833aa8ff0b368ffb016a20b6061a9..f00bfd608e513855be13907fda30086e56b5f942 100644 (file)
@@ -123,6 +123,20 @@ void UTIL_createDestinationDirTable(const char** filenameTable, unsigned nbFiles
     } 
 }
 
+void UTIL_processMultipleFilenameDestinationDir(char** dstFilenameTable,
+                                              const char** filenameTable, unsigned filenameIdx,
+                                              const char* outFileName, const char* outDirName) {
+    int dirResult;
+    dirResult = UTIL_createDir(outDirName);
+    if (dirResult)
+        UTIL_DISPLAYLEVEL(1, "Directory creation unsuccessful\n");
+
+    UTIL_createDestinationDirTable(filenameTable, filenameIdx, outDirName, dstFilenameTable);
+    if (outFileName) {
+        outFileName = dstFilenameTable[0]; /* in case -O is called with single file */
+    }
+}
+
 void UTIL_freeDestinationFilenameTable(char** dstDirTable, unsigned nbFiles) {
     unsigned u;
     for (u = 0; u < nbFiles; ++u) {
index 1c1273262941115020f74131bbe3a92e58ea1def..9615504ca27ffdc8ee8818279a202593b901f5b6 100644 (file)
@@ -133,6 +133,9 @@ int UTIL_isSameFile(const char* file1, const char* file2);
 void UTIL_createDestinationDirTable(const char** filenameTable, unsigned filenameIdx,
         const char* outDirName,  char** dstFilenameTable);
 void UTIL_freeDestinationFilenameTable(char** dstDirTable, unsigned nbFiles);
+void UTIL_processMultipleFilenameDestinationDir(char** dstFilenameTable,
+                                              const char** filenameTable, unsigned filenameIdx,
+                                              const char* outFileName, const char* outDirName);
 
 U32 UTIL_isLink(const char* infilename);
 #define UTIL_FILESIZE_UNKNOWN  ((U64)(-1))
index 9029f6344c08819c09e24dcfe2914d83a61da8e7..606c162f77e1ea49e2ac5516e7c7fd283c1a670d 100644 (file)
@@ -1178,8 +1178,9 @@ int main(int argCount, const char* argv[])
         if (adaptMax < cLevel) cLevel = adaptMax;
 
         if (outDirName) {
+            printf("ok\n");
             dstFilenameTable = (char**)malloc(filenameIdx * sizeof(char*));
-            FIO_processMultipleFilenameDestinationDir(dstFilenameTable, filenameTable, filenameIdx, outFileName, outDirName);
+            UTIL_processMultipleFilenameDestinationDir(dstFilenameTable, filenameTable, filenameIdx, outFileName, outDirName);
         }
 
         if ((filenameIdx==1) && outFileName)
@@ -1203,7 +1204,7 @@ int main(int argCount, const char* argv[])
 
         if (outDirName) {
             dstFilenameTable = (char**)malloc(filenameIdx * sizeof(char*));
-            FIO_processMultipleFilenameDestinationDir(dstFilenameTable, filenameTable, filenameIdx, outFileName, outDirName);
+            UTIL_processMultipleFilenameDestinationDir(dstFilenameTable, filenameTable, filenameIdx, outFileName, outDirName);
         }
         if (filenameIdx==1 && outFileName)
             operationResult = FIO_decompressFilename(prefs, outFileName, filenameTable[0], dictFileName);