diff --git a/ZipArchive.cs b/ZipArchive.cs index a076d3a5..38e1f8ee 100644 --- a/ZipArchive.cs +++ b/ZipArchive.cs @@ -840,12 +840,16 @@ public void Close () if (archive == IntPtr.Zero) return; - Native.zip_close (archive); - foreach (var s in sources) { - s.Dispose (); + try { + if (Native.zip_close (archive) < 0) + throw GetErrorException (); + } finally { + foreach (var s in sources) { + s.Dispose (); + } + sources.Clear (); + archive = IntPtr.Zero; } - sources.Clear (); - archive = IntPtr.Zero; } ///