Sencond part of the patch
authorMiguel de Icaza <miguel@gnome.org>
Wed, 28 Apr 2004 23:49:52 +0000 (23:49 -0000)
committerMiguel de Icaza <miguel@gnome.org>
Wed, 28 Apr 2004 23:49:52 +0000 (23:49 -0000)
svn path=/trunk/mcs/; revision=26222

mcs/class/corlib/System.IO/TextWriter.cs

index 2b1ab2bac88f2bf61863171c5e2305490f0a0ae5..08faa24ae143f3f1637888127623e9ad051f9157 100644 (file)
@@ -63,6 +63,11 @@ namespace System.IO {
                }\r
 \r
                 public static TextWriter Synchronized (TextWriter writer)\r
+               {\r
+                       return Synchronized (writer, false);\r
+                }\r
+\r
+                internal static TextWriter Synchronized (TextWriter writer, bool neverClose)\r
                {\r
                        if (writer == null)\r
                                throw new ArgumentNullException ("writer is null");\r
@@ -70,7 +75,7 @@ namespace System.IO {
                        if (writer is SynchronizedWriter)\r
                                return writer;\r
                        \r
-                       return new SynchronizedWriter (writer);\r
+                       return new SynchronizedWriter (writer, neverClose);\r
                 }\r
 \r
                 public virtual void Write (bool value)\r
@@ -310,14 +315,23 @@ namespace System.IO {
        [Serializable]\r
        internal class SynchronizedWriter : TextWriter {\r
                private TextWriter writer;\r
+               private bool neverClose;\r
 \r
                public SynchronizedWriter (TextWriter writer)\r
+                       : this (writer, false)\r
+               {\r
+               }\r
+\r
+               public SynchronizedWriter (TextWriter writer, bool neverClose)\r
                {\r
                        this.writer = writer;\r
+                       this.neverClose = neverClose;\r
                }\r
 \r
                public override void Close ()\r
                {\r
+                       if (neverClose)\r
+                               return;\r
                        lock (this){\r
                                writer.Close ();\r
                        }\r