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