diff --git a/coding/zip_reader.cpp b/coding/zip_reader.cpp index 806e4d4b37..37765e4463 100644 --- a/coding/zip_reader.cpp +++ b/coding/zip_reader.cpp @@ -95,8 +95,10 @@ void ZipFileReader::UnzipFile(string const & zipContainer, string const & fileIn static size_t const BUF_SIZE = 1024 * 50; vector buf(BUF_SIZE); - FileWriter outFile(outFilePath); + // First outFile should be closed, then FileWriter::DeleteFileX is called, + // so make correct order of guards. MY_SCOPE_GUARD(outFileGuard, bind(&FileWriter::DeleteFileX, cref(outFilePath))); + FileWriter outFile(outFilePath); int pos = 0; while (true)