2004-12-01 Atsushi Enomoto <atsushi@ximian.com>
authorAtsushi Eno <atsushieno@gmail.com>
Wed, 1 Dec 2004 10:08:37 +0000 (10:08 -0000)
committerAtsushi Eno <atsushieno@gmail.com>
Wed, 1 Dec 2004 10:08:37 +0000 (10:08 -0000)
* Compiler.cs : XPathNavigatorNsm needed more love. Clone() does not
  make sense here.

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

mcs/class/System.XML/Mono.Xml.Xsl/ChangeLog
mcs/class/System.XML/Mono.Xml.Xsl/Compiler.cs

index 25f8c9acddb30bb6271e42f7f8948ed7af2b2ed4..c94debf9256541c7042e2f58af9e91c4fb4353b1 100644 (file)
@@ -1,3 +1,8 @@
+2004-12-01  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * Compiler.cs : XPathNavigatorNsm needed more love. Clone() does not
+         make sense here.
+
 2004-12-01  Atsushi Enomoto  <atsushi@ximian.com>
 
        * Compiler.cs : don't create XPathNavigatorNsm for every GetNsm() call.
index 55af46dac86dff06339e0b8b53da956fb7d04b3a..fcde5be0d3b91160a73567b41aba06841e6d5280 100644 (file)
@@ -824,9 +824,7 @@ namespace Mono.Xml.Xsl
                XPathNavigator nsScope;
                
                public XPathNavigatorNsm (XPathNavigator n) : base (n.NameTable) {
-                       nsScope = n.Clone ();
-                       if (nsScope.NodeType == XPathNodeType.Attribute)
-                               nsScope.MoveToParent ();
+                       nsScope = n;
                }
 
                public XPathNavigator Navigator {
@@ -844,7 +842,13 @@ namespace Mono.Xml.Xsl
                        if (prefix == "" || prefix == null)
                                return "";
                        
-                       return nsScope.GetNamespace (prefix);
+                       XPathNavigator n = nsScope;
+                       if (nsScope.NodeType == XPathNodeType.Attribute) {
+                               n = nsScope.Clone ();
+                               n.MoveToParent ();
+                       }
+
+                       return n.GetNamespace (prefix);
                }
        }
 }