From d08da3813d763cbf5b6536a7f8f5606ad463ab2e Mon Sep 17 00:00:00 2001 From: Atsushi Eno Date: Wed, 9 Feb 2005 07:03:41 +0000 Subject: [PATCH] 2004-02-09 Atsushi Enomoto * Expression.cs : RelationalExpr was comparing number and node in reverse order. Patch by Kazuki Oikawa. Fixed bug #72343. RelationalExpr should also handle result tree fragment as node-set as well as EqualityExpr. This fixes RTF case wrt #72343. svn path=/trunk/mcs/; revision=40326 --- mcs/class/System.XML/System.Xml.XPath/ChangeLog | 7 +++++++ mcs/class/System.XML/System.Xml.XPath/Expression.cs | 8 +++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/mcs/class/System.XML/System.Xml.XPath/ChangeLog b/mcs/class/System.XML/System.Xml.XPath/ChangeLog index 674c8e3cd16..763b1122b67 100644 --- a/mcs/class/System.XML/System.Xml.XPath/ChangeLog +++ b/mcs/class/System.XML/System.Xml.XPath/ChangeLog @@ -1,3 +1,10 @@ +2004-02-09 Atsushi Enomoto + + * Expression.cs : RelationalExpr was comparing number and node in + reverse order. Patch by Kazuki Oikawa. Fixed bug #72343. + RelationalExpr should also handle result tree fragment as node-set + as well as EqualityExpr. This fixes RTF case wrt #72343. + 2004-02-08 Atsushi Enomoto * Expression.cs : tiny code format fix by Andrew Skiba. diff --git a/mcs/class/System.XML/System.Xml.XPath/Expression.cs b/mcs/class/System.XML/System.Xml.XPath/Expression.cs index 0e11d0b6ea1..60269327588 100644 --- a/mcs/class/System.XML/System.Xml.XPath/Expression.cs +++ b/mcs/class/System.XML/System.Xml.XPath/Expression.cs @@ -734,6 +734,12 @@ namespace System.Xml.XPath if (typeR == XPathResultType.Any) typeR = GetReturnType (_right.Evaluate (iter)); + // Regard RTF as nodeset + if (typeL == XPathResultType.Navigator) + typeL = XPathResultType.NodeSet; + if (typeR == XPathResultType.Navigator) + typeR = XPathResultType.NodeSet; + if (typeL == XPathResultType.NodeSet || typeR == XPathResultType.NodeSet) { bool fReverse = false; @@ -778,7 +784,7 @@ namespace System.Xml.XPath { double numR = XPathFunctions.ToNumber (iterR.Current.Value); for (int l = 0; l < rgNodesL.Count; l++) - if (Compare (numR, (double) rgNodesL [l])) + if (Compare ((double) rgNodesL [l], numR)) return true; } } -- 2.25.1