]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
propagate errors when decompressing; also unlink dstfile if we create it but fail
authorChip Turner <cturner@pattern.net>
Mon, 14 Mar 2016 05:24:46 +0000 (22:24 -0700)
committerChip Turner <cturner@pattern.net>
Mon, 14 Mar 2016 05:33:11 +0000 (22:33 -0700)
to successfully compress or decompress

programs/fileio.c

index 028c7db45a72c755ef3acb4773abc86f45eebcbf..25d75b6262ea8d25cc171480d7adc4641c80e25b 100644 (file)
@@ -428,6 +428,10 @@ static int FIO_compressFilename_extRess(cRess_t ress,
 
     result = FIO_compressFilename_internal(ress, dstFileName, srcFileName, cLevel);
 
+    if (result != 0) {
+      unlink(dstFileName);
+    }
+
     fclose(ress.srcFile);   /* no pb to expect : only reading */
     if (fclose(ress.dstFile)) EXM_THROW(28, "Write error : cannot properly close %s", dstFileName);
     return result;
@@ -633,13 +637,17 @@ static int FIO_decompressSrcFile(dRess_t ress, const char* srcFileName)
 static int FIO_decompressFile_extRess(dRess_t ress,
                                       const char* dstFileName, const char* srcFileName)
 {
+    int result;
     ress.dstFile = FIO_openDstFile(dstFileName);
     if (ress.dstFile==0) return 1;
 
-    FIO_decompressSrcFile(ress, srcFileName);
+    result = FIO_decompressSrcFile(ress, srcFileName);
+    if (result != 0) {
+      unlink(dstFileName);
+    }
 
     if (fclose(ress.dstFile)) EXM_THROW(38, "Write error : cannot properly close %s", dstFileName);
-    return 0;
+    return result;
 }