2007-10-19 Atsushi Enomoto <atsushi@ximian.com>
authorAtsushi Eno <atsushieno@gmail.com>
Fri, 19 Oct 2007 05:36:00 +0000 (05:36 -0000)
committerAtsushi Eno <atsushieno@gmail.com>
Fri, 19 Oct 2007 05:36:00 +0000 (05:36 -0000)
* SubtreeXmlReader.cs : when a subtree reader is closed, the original
  reader moves to the end of the subtree. Fixed bug #334752, patch by
  Scott Peterson.

* XmlReaderCommonTests.cs : added test for bug #334752.

svn path=/trunk/mcs/; revision=87812

mcs/class/System.XML/Mono.Xml/ChangeLog
mcs/class/System.XML/Mono.Xml/SubtreeXmlReader.cs
mcs/class/System.XML/Test/System.Xml/ChangeLog
mcs/class/System.XML/Test/System.Xml/XmlReaderCommonTests.cs

index a9af6c9eafa63ef96166542dbd232ef54eddf527..422ce67d4a6b0a6b9297d241b2632cc0c0125775 100644 (file)
@@ -1,3 +1,9 @@
+2007-10-19  Atsushi Enomoto <atsushi@ximian.com>
+
+       * SubtreeXmlReader.cs : when a subtree reader is closed, the original
+         reader moves to the end of the subtree. Fixed bug #334752, patch by
+         Scott Peterson.
+
 2007-08-09  Atsushi Enomoto <atsushi@ximian.com>
 
        * SubtreeXmlReader.cs XmlFilterReader.cs : further dependent changes.
index ba1dbca8afc57a777c29242fce7c2c0dfbf69a2f..1f1880016ac5532864ae92dad7738d994196e242 100644 (file)
@@ -142,7 +142,8 @@ namespace Mono.Xml
 
                public override void Close ()
                {
-                       // do nothing
+                       while (Reader.Depth > startDepth && Read ())
+                               ;
                }
 
                public override string GetAttribute (int i)
index 5b27f7e0be0bd63c4586097a513e30a4db0c5545..ac88d21add99d2add3573c29b7f220dff65fd1bf 100644 (file)
@@ -1,3 +1,7 @@
+2007-10-19  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * XmlReaderCommonTests.cs : added test for bug #334752.
+
 2007-09-28  Atsushi Enomoto  <atsushi@ximian.com>
 
        * XmlWriterTests.cs : added WriteNodeXPathNavigatorAttribute().
index 0bd102e1b180f1a2e0ac568754ca6588d51cc8ac..c15a344ab6ff44c762f88d420329e91a3b187d54 100644 (file)
@@ -2001,6 +2001,24 @@ namespace MonoTests.System.Xml
                        AssertEquals (String.Empty, reader.ReadElementContentAsString ("sample", ""));\r
                        AssertEquals (XmlNodeType.EndElement, reader.NodeType);\r
                }\r
+\r
+               [Test]\r
+               public void ReadSubtreeClose ()\r
+               {\r
+                       // bug #334752\r
+                       string xml = @"<root><item-list><item id='a'/><item id='b'/></item-list></root>";\r
+                       RunTest (xml, new TestMethod (ReadSubtreeClose));\r
+               }\r
+\r
+               void ReadSubtreeClose (XmlReader reader)\r
+               {\r
+                       reader.ReadToFollowing ("item-list");\r
+                       XmlReader sub = reader.ReadSubtree ();\r
+                       sub.ReadToDescendant ("item");\r
+                       sub.Close ();\r
+                       AssertEquals ("#1", XmlNodeType.EndElement, reader.NodeType);\r
+                       AssertEquals ("#2", "item-list", reader.Name);\r
+               }\r
 #endif\r
        }\r
 }\r