[Mono-bugs] [Bug 65918][Nor] New - Regression: ObjectDisposedException when calling XmlTextWriter.Close() twice
bugzilla-daemon@bugzilla.ximian.com
bugzilla-daemon@bugzilla.ximian.com
Tue, 14 Sep 2004 02:44:25 -0400 (EDT)
Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.
Changed by gert.driesen@pandora.be.
http://bugzilla.ximian.com/show_bug.cgi?id=65918
--- shadow/65918 2004-09-14 02:44:25.000000000 -0400
+++ shadow/65918.tmp.19648 2004-09-14 02:44:25.000000000 -0400
@@ -0,0 +1,54 @@
+Bug#: 65918
+Product: Mono: Class Libraries
+Version: unspecified
+OS:
+OS Details:
+Status: NEW
+Resolution:
+Severity:
+Priority: Normal
+Component: Sys.XML
+AssignedTo: mono-bugs@ximian.com
+ReportedBy: gert.driesen@pandora.be
+QAContact: mono-bugs@ximian.com
+TargetMilestone: ---
+URL:
+Cc:
+Summary: Regression: ObjectDisposedException when calling XmlTextWriter.Close() twice
+
+Recent modifications made to XmlTextWriter, changed the behaviour when the
+XmlTextWriter is closed.
+
+When invoking Close() on an XmlTextWriter the underlying StreamWriter is
+now both Flushed and Closed, While only Close should be called. When
+StreamWriter.Close() is called, a flush will be performed anyway.
+
+As a side-effect of calling both Close and Flush on the StreamWriter, an
+ObjectDisposedException is thrown when calling Close twice on the
+XmlTextWriter (as the Flush call will throw an ObjectDisposedException the
+second time).
+
+When you compile and execute the following code :
+
+using System.IO;
+using System.Text;
+using System.Xml;
+
+public class EntryPoint {
+ public static void Main() {
+ XmlTextWriter writer = new XmlTextWriter("test.xml", Encoding.UTF8);
+
+ writer.Close();
+ writer.Close();
+ }
+}
+
+The following exception is thrown on Mono :
+
+Unhandled Exception: System.ObjectDisposedException: The object was used
+after being disposed.
+in <0x00035> System.IO.StreamWriter:Flush ()
+in <0x0001c> System.Xml.XmlTextWriter:Close ()
+in <0x0004a> EntryPoint:Main ()
+
+Running the same code on MS.NET works fine.