From afc27305485f2ba808b899f84b605380d3307cb5 Mon Sep 17 00:00:00 2001 From: Adam Hathcock Date: Wed, 29 Apr 2026 09:43:38 +0100 Subject: [PATCH] fix up disposal for legacy frameworks --- src/SharpCompress/Writers/Zip/ZipWriter.cs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/SharpCompress/Writers/Zip/ZipWriter.cs b/src/SharpCompress/Writers/Zip/ZipWriter.cs index f9cdc626..56aaa09a 100644 --- a/src/SharpCompress/Writers/Zip/ZipWriter.cs +++ b/src/SharpCompress/Writers/Zip/ZipWriter.cs @@ -764,7 +764,11 @@ public partial class ZipWriter : AbstractWriter .ConfigureAwait(false); } +#if NET48 || NETSTANDARD2_0 + public async ValueTask DisposeAsync() +#else public override async ValueTask DisposeAsync() +#endif { if (isDisposed) { @@ -773,12 +777,20 @@ public partial class ZipWriter : AbstractWriter isDisposed = true; +#if NET48 || NETSTANDARD2_0 + writeStream.Dispose(); +#else await writeStream.DisposeAsync().ConfigureAwait(false); +#endif if (limitsExceeded) { // We have written invalid data into the archive, so destroy it +#if NET48 || NETSTANDARD2_0 + originalStream.Dispose(); +#else await originalStream.DisposeAsync().ConfigureAwait(false); +#endif return; } @@ -867,8 +879,10 @@ public partial class ZipWriter : AbstractWriter writer.streamPosition += (long)entry.Compressed + 16; } writer.entries.Add(entry); +#if !NET48 && !NETSTANDARD2_0 // base.DisposeAsync() is a no-op since isDisposed is already set await base.DisposeAsync().ConfigureAwait(false); +#endif } private static async Task WriteFooterAsync(