summary refs log tree commit diff
path: root/crypto/src/openpgp/WrappedGeneratorStream.cs
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/src/openpgp/WrappedGeneratorStream.cs')
-rw-r--r--crypto/src/openpgp/WrappedGeneratorStream.cs42
1 files changed, 23 insertions, 19 deletions
diff --git a/crypto/src/openpgp/WrappedGeneratorStream.cs b/crypto/src/openpgp/WrappedGeneratorStream.cs
index 5f4a4b045..df31d71f0 100644
--- a/crypto/src/openpgp/WrappedGeneratorStream.cs
+++ b/crypto/src/openpgp/WrappedGeneratorStream.cs
@@ -1,37 +1,41 @@
+using System;
 using System.IO;
 
 using Org.BouncyCastle.Utilities.IO;
 
 namespace Org.BouncyCastle.Bcpg.OpenPgp
 {
-	public class WrappedGeneratorStream
+	internal sealed class WrappedGeneratorStream
 		: FilterStream
 	{
-		private readonly IStreamGenerator gen;
+		private IStreamGenerator m_generator;
 
-		public WrappedGeneratorStream(
-			IStreamGenerator	gen,
-			Stream				str)
-			: base(str)
+		internal WrappedGeneratorStream(IStreamGenerator generator, Stream s)
+			: base(s)
 		{
-			this.gen = gen;
+			if (generator == null)
+				throw new ArgumentNullException(nameof(generator));
+
+			m_generator = generator;
 		}
 
-#if PORTABLE
         protected override void Dispose(bool disposing)
         {
-            if (disposing)
+			if (m_generator != null)
+			{
+				if (disposing)
+				{
+					m_generator.Close();
+				}
+
+				m_generator = null;
+			}
+
+			// Don't dispose the wrapped Stream
+			if (!disposing)
             {
-                gen.Close();
-                return;
-            }
-            base.Dispose(disposing);
-        }
-#else
-		public override void Close()
-		{
-			gen.Close();
+				base.Dispose(disposing);
+			}
 		}
-#endif
 	}
 }