X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fclass%2FSystem.XML%2FMono.Xml%2FSubtreeXmlReader.cs;h=38919bebb8c92ba2849590d77b119a6be7581bdf;hb=f0c4bb76e4ecda59938fa6d2fde07b84e322b14e;hp=45ad03018653e0c9b322c57fec6a43cb3cab54c8;hpb=5d9434fcb3acc1ed7d3d30603faae797d672fe65;p=mono.git diff --git a/mcs/class/System.XML/Mono.Xml/SubtreeXmlReader.cs b/mcs/class/System.XML/Mono.Xml/SubtreeXmlReader.cs index 45ad0301865..38919bebb8c 100644 --- a/mcs/class/System.XML/Mono.Xml/SubtreeXmlReader.cs +++ b/mcs/class/System.XML/Mono.Xml/SubtreeXmlReader.cs @@ -93,15 +93,15 @@ namespace Mono.Xml } public override bool HasValue { - get { return initial ? false : Reader.HasValue; } + get { return initial || eof ? false : Reader.HasValue; } } public override string LocalName { - get { return initial ? String.Empty : Reader.LocalName; } + get { return initial || eof ? String.Empty : Reader.LocalName; } } public override string Name { - get { return initial ? String.Empty : Reader.Name; } + get { return initial || eof ? String.Empty : Reader.Name; } } public override XmlNameTable NameTable { @@ -109,24 +109,26 @@ namespace Mono.Xml } public override string NamespaceURI { - get { return initial ? String.Empty : Reader.NamespaceURI; } + get { return initial || eof ? String.Empty : Reader.NamespaceURI; } } public override XmlNodeType NodeType { - get { return initial ? XmlNodeType.None : Reader.NodeType; } + get { return initial || eof ? XmlNodeType.None : Reader.NodeType; } } public override string Prefix { - get { return initial ? String.Empty : Reader.Prefix; } + get { return initial || eof ? String.Empty : Reader.Prefix; } } public override ReadState ReadState { get { return initial ? ReadState.Initial : eof ? ReadState.EndOfFile : Reader.ReadState ; } } +#if !NET_2_1 public override IXmlSchemaInfo SchemaInfo { get { return Reader.SchemaInfo; } } +#endif public override XmlReaderSettings Settings { get { return Reader.Settings; } @@ -138,7 +140,8 @@ namespace Mono.Xml public override void Close () { - // do nothing + while (Read ()) + ; } public override string GetAttribute (int i) @@ -216,8 +219,13 @@ namespace Mono.Xml } if (!read) { read = true; - return !Reader.IsEmptyElement && Reader.Read (); + Reader.MoveToElement (); + bool ret = !Reader.IsEmptyElement && Reader.Read (); + if (!ret) + eof = true; + return ret; } + Reader.MoveToElement (); if (Reader.Depth > startDepth) if (Reader.Read ()) return true;