diff --git a/SevenZip.Tests/SevenZip.Tests.csproj b/SevenZip.Tests/SevenZip.Tests.csproj index f8ace8a..18117b9 100644 --- a/SevenZip.Tests/SevenZip.Tests.csproj +++ b/SevenZip.Tests/SevenZip.Tests.csproj @@ -48,6 +48,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest diff --git a/SevenZip.Tests/SevenZipExtractorTests.cs b/SevenZip.Tests/SevenZipExtractorTests.cs index 94b7d78..a80ef7c 100644 --- a/SevenZip.Tests/SevenZipExtractorTests.cs +++ b/SevenZip.Tests/SevenZipExtractorTests.cs @@ -21,7 +21,7 @@ public static List TestFiles foreach (var file in Directory.GetFiles(Path.Combine(TestContext.CurrentContext.TestDirectory, "TestData"))) { - if (file.Contains("multi") || file.Contains("long_path")) + if (file.Contains("multi") || file.Contains("long_path") || file.Contains("CorruptedArchive.7z")) { continue; } @@ -32,6 +32,20 @@ public static List TestFiles return result; } } + + [Test] + public void CheckCorruptedFile_DisposeStream() + { + using (var extractor = new SevenZipExtractor(@"TestData\CorruptedArchive.7z")) + { + if (!extractor.Check()) + { + + } + } + + File.OpenWrite(@"TestData\CorruptedArchive.7z"); + } [Test] public void ExtractFilesTest() diff --git a/SevenZip.Tests/TestData/CorruptedArchive.7z b/SevenZip.Tests/TestData/CorruptedArchive.7z new file mode 100644 index 0000000..dd3c487 Binary files /dev/null and b/SevenZip.Tests/TestData/CorruptedArchive.7z differ diff --git a/SevenZip/SevenZipExtractor.cs b/SevenZip/SevenZipExtractor.cs index 9b32f6e..976ecbc 100644 --- a/SevenZip/SevenZipExtractor.cs +++ b/SevenZip/SevenZipExtractor.cs @@ -985,6 +985,11 @@ public bool Check() } catch (Exception) { + if (_archiveStream is DisposeVariableWrapper disposeVariableWrapper) + { + disposeVariableWrapper.DisposeStream = true; + } + return false; } finally