diff options
author | Peter Dettman <peter.dettman@bouncycastle.org> | 2023-03-06 22:44:32 +0700 |
---|---|---|
committer | Peter Dettman <peter.dettman@bouncycastle.org> | 2023-03-06 22:44:32 +0700 |
commit | 44844b4c0e0df30a72f1659b9904749f456f2545 (patch) | |
tree | d727163d1ff7d8126c640b4263aed0f041de1e8e /crypto/src/util/zlib/ZOutputStream.cs | |
parent | Use Id instead of ToString (diff) | |
download | BouncyCastle.NET-ed25519-44844b4c0e0df30a72f1659b9904749f456f2545.tar.xz |
Support leaveOpen in decompressors
Diffstat (limited to '')
-rw-r--r-- | crypto/src/util/zlib/ZOutputStream.cs | 57 |
1 files changed, 23 insertions, 34 deletions
diff --git a/crypto/src/util/zlib/ZOutputStream.cs b/crypto/src/util/zlib/ZOutputStream.cs index ecf33cddf..04b7bb8e5 100644 --- a/crypto/src/util/zlib/ZOutputStream.cs +++ b/crypto/src/util/zlib/ZOutputStream.cs @@ -113,26 +113,7 @@ namespace Org.BouncyCastle.Utilities.Zlib { if (disposing) { - if (!closed) - { - try - { - try - { - Finish(); - } - catch (IOException) - { - // Ignore - } - } - finally - { - this.closed = true; - End(); - output = null; - } - } + ImplDisposing(disposeOutput: false); } base.Dispose(disposing); } @@ -141,29 +122,37 @@ namespace Org.BouncyCastle.Utilities.Zlib { if (disposing) { - if (!closed) + ImplDisposing(disposeOutput: true); + } + base.Dispose(disposing); + } + + private void ImplDisposing(bool disposeOutput) + { + if (!closed) + { + try { try { - try - { - Finish(); - } - catch (IOException) - { - // Ignore - } + Finish(); } - finally + catch (IOException) + { + // Ignore + } + } + finally + { + this.closed = true; + End(); + if (disposeOutput) { - this.closed = true; - End(); output.Dispose(); - output = null; } + output = null; } } - base.Dispose(disposing); } public virtual void End() |