]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
no need to track tableBuf
authorYann Collet <cyan@fb.com>
Sat, 26 Oct 2019 00:34:29 +0000 (17:34 -0700)
committerYann Collet <cyan@fb.com>
Sat, 26 Oct 2019 00:34:29 +0000 (17:34 -0700)
free() is compatible with NULL,
let's free() unconditionnally

programs/util.c
programs/util.h
programs/zstdcli.c

index e2115301c5257080f8ad5002e638378b8d4a1824..41015d2bcd901e582094d110c7764905669cc1da 100644 (file)
@@ -200,17 +200,16 @@ U64 UTIL_getFileSize(const char* infilename)
 }
 
 
-U64 UTIL_getTotalFileSize(const char* const * const fileNamesTable, unsigned nbFiles)
+U64 UTIL_getTotalFileSize(const char* const * fileNamesTable, unsigned nbFiles)
 {
     U64 total = 0;
-    int error = 0;
     unsigned n;
     for (n=0; n<nbFiles; n++) {
         U64 const size = UTIL_getFileSize(fileNamesTable[n]);
-        error |= (size == UTIL_FILESIZE_UNKNOWN);
+        if (size == UTIL_FILESIZE_UNKNOWN) return UTIL_FILESIZE_UNKNOWN;
         total += size;
     }
-    return error ? UTIL_FILESIZE_UNKNOWN : total;
+    return total;
 }
 
 
@@ -222,7 +221,7 @@ static size_t readLineFromFile(char* buf, size_t len, FILE* file)
     assert(!feof(file));
     CONTROL( fgets(buf, (int) len, file) == buf );  /* requires success */
     if (strlen(buf)==0) return 0;
-    return strlen(buf) - (buf[strlen(buf)-1] == '\n');   /* -1 to ignore final '\n' character */
+    return strlen(buf) - (buf[strlen(buf)-1] == '\n');   /* ignore final '\n' character */
 }
 
 /* Conditions :
index babb2644bf70fbba2af464580664fd27acf56432..68e80c13acf003120114a494d6219b451e495c6e 100644 (file)
@@ -141,7 +141,7 @@ U32 UTIL_isLink(const char* infilename);
 #define UTIL_FILESIZE_UNKNOWN  ((U64)(-1))
 U64 UTIL_getFileSize(const char* infilename);
 
-U64 UTIL_getTotalFileSize(const char* const * const fileNamesTable, unsigned nbFiles);
+U64 UTIL_getTotalFileSize(const char* const * fileNamesTable, unsigned nbFiles);
 
 /*Note: tableSize is denotes the total capacity of table*/
 typedef struct
@@ -151,35 +151,35 @@ typedef struct
     size_t tableSize;
 } FileNamesTable;
 
-/*! UTIL_readFileNamesTableFromFile(const char* inputFileName) :
- * @return : char** the fileNamesTable or NULL in case of not regular file or file doesn't exist.
- *  reads fileNamesTable from input fileName.
- *  Note: inputFileSize should be less than or equal 50MB
+/*! UTIL_readFileNamesTableFromFile() :
+ *  reads fileNamesTable from @inputFileName.
+ * @return : a FileNamesTable*, or NULL in case of error (ex: file doesn't exist).
+ *  Note: inputFileSize must be less than 50MB
  */
-FileNamesTable* UTIL_createFileNamesTable_fromFileName(const char* inputFileName);
+FileNamesTable*
+UTIL_createFileNamesTable_fromFileName(const char* inputFileName);
 
 
-/*!  UTIL_freeFileNamesTable(const char** filenames, char* buf, size_t tableSize) :
- * This function takes an buffered based filename, buf and tableSize to create its object.
- * @return : FileNamesTable*
+/*! UTIL_freeFileNamesTable() :
+ *  This function references its arguments inside the created object.
+ * @return : FileNamesTable*, or NULL, if allocation fails.
  */
 
 FileNamesTable*
 UTIL_createFileNamesTable(const char** filenames, size_t tableSize, char* buf);
 
 
-/*!  UTIL_freeFileNamesTable(FileNamesTable* table) :
- * This function takes an buffered based table and frees it.
- * @return : void.
+/*! UTIL_freeFileNamesTable() :
+ *  This function is compatible with NULL argument and never fails.
  */
 void UTIL_freeFileNamesTable(FileNamesTable* table);
 
-/*! UTIL_concatenateTwoTables(FileNamesTable* table1,FileNamesTable* table2):
- * takes table1, its maxSize, table2 and its maxSize, free them and returns its concatenation.
- * @return : FileNamesTable* concatenation of two tables
- * note table1 and table2 will be freed
+/*! UTIL_concatenateTwoTables():
+ * @return : FileNamesTable*, concatenation of @table1 and @table2
+ *  note: @table1 and @table2 are consumed (freed) by this operation
  */
-FileNamesTable* UTIL_concatenateTwoTables(FileNamesTable* table1, FileNamesTable* table2);
+FileNamesTable*
+UTIL_concatenateTwoTables(FileNamesTable* table1, FileNamesTable* table2);
 
 /*
  * A modified version of realloc().
index a7fb81eaece744d006dca1651d65fdfb69c2287b..731b330188c487466052ab90a802514cd6c1daf5 100644 (file)
@@ -566,7 +566,6 @@ int main(int argCount, const char* argv[])
         nextArgumentIsMaxDict = 0,
         nextArgumentIsDictID = 0,
         nextArgumentsAreFiles = 0,
-        isTableBufferBased = 0,
         nextEntryIsDictionary = 0,
         operationResult = 0,
         separateFiles = 0,
@@ -827,7 +826,6 @@ int main(int argCount, const char* argv[])
 
                         concatenatedTables = UTIL_concatenateTwoTables(curTable, extendedTable);
                         if (!concatenatedTables) {
-                            if (!isTableBufferBased) curTable->buf = NULL;
                             UTIL_freeFileNamesTable(curTable);
                             UTIL_freeFileNamesTable(extendedTable);
                             CLEAN_RETURN(badusage(programName));
@@ -842,8 +840,6 @@ int main(int argCount, const char* argv[])
                         concatenatedTables->buf = NULL;
                         UTIL_freeFileNamesTable(concatenatedTables);
 
-                        isTableBufferBased = 1;   /* file names are now in heap */
-
                         continue;
                     }
                     /* fall-through, will trigger bad_usage() later on */
@@ -1253,11 +1249,7 @@ int main(int argCount, const char* argv[])
 _end:
     FIO_freePreferences(prefs);
 
-    if(filenameTable) {
-       if(isTableBufferBased && tableBuf){
-         free(tableBuf);
-       }
-    }
+    free(tableBuf);
 
     if (main_pause) waitEnter();
 #ifdef UTIL_HAS_CREATEFILELIST