Browse Source

ensure the file is closed in XmlWriter.Create(filename)

svn path=/trunk/mcs/; revision=77450
Konstantin Triger 18 years ago
parent
commit
286c3bfeb8

+ 5 - 0
mcs/class/System.XML/System.Xml/ChangeLog

@@ -1,3 +1,8 @@
+2007-05-15  Konstantin Triger <[email protected]>
+
+	* XmlWriter.cs, XmlTextWriter2.cs: ensure the file
+		is closed in XmlWriter.Create(filename).
+
 2007-04-25  Atsushi Enomoto  <[email protected]>
 
 	* XmlConvert.cs : MinValue and MaxValue, same for ToDateTime().

+ 2 - 2
mcs/class/System.XML/System.Xml/XmlTextWriter2.cs

@@ -263,14 +263,14 @@ namespace Mono.Xml
 
 #if NET_2_0
 		internal XmlTextWriter (
-			TextWriter writer, XmlWriterSettings settings)
+			TextWriter writer, XmlWriterSettings settings, bool closeOutput)
 		{
 			if (settings == null)
 				settings = new XmlWriterSettings ();
 
 			Initialize (writer);
 
-			close_output_stream = settings.CloseOutput;
+			close_output_stream = closeOutput;
 			allow_doc_fragment =
 				settings.ConformanceLevel != ConformanceLevel.Document;
 			switch (settings.ConformanceLevel) {

+ 6 - 4
mcs/class/System.XML/System.Xml/XmlWriter.cs

@@ -125,7 +125,7 @@ namespace System.Xml
 		public static XmlWriter Create (string file, XmlWriterSettings settings)
 		{
 			Encoding enc = settings != null ? settings.Encoding : Encoding.UTF8;
-			return Create (new StreamWriter (file, false, enc), settings);
+			return CreateTextWriter (new StreamWriter (file, false, enc), settings, true);
 		}
 
 		public static XmlWriter Create (StringBuilder builder, XmlWriterSettings settings)
@@ -135,7 +135,9 @@ namespace System.Xml
 
 		public static XmlWriter Create (TextWriter writer, XmlWriterSettings settings)
 		{
-			return CreateTextWriter (writer, settings);
+			if (settings == null)
+				settings = new XmlWriterSettings ();
+			return CreateTextWriter (writer, settings, settings.CloseOutput);
 		}
 
 		public static XmlWriter Create (XmlWriter writer, XmlWriterSettings settings)
@@ -146,11 +148,11 @@ namespace System.Xml
 			return writer;
 		}
 
-		private static XmlWriter CreateTextWriter (TextWriter writer, XmlWriterSettings settings)
+		private static XmlWriter CreateTextWriter (TextWriter writer, XmlWriterSettings settings, bool closeOutput)
 		{
 			if (settings == null)
 				settings = new XmlWriterSettings ();
-			XmlTextWriter xtw = new XmlTextWriter (writer, settings);
+			XmlTextWriter xtw = new XmlTextWriter (writer, settings, closeOutput);
 			return Create (xtw, settings);
 		}