Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.

Changed by [EMAIL PROTECTED]

http://bugzilla.ximian.com/show_bug.cgi?id=77194

--- shadow/77194        2006-01-11 05:57:21.000000000 -0500
+++ shadow/77194.tmp.18227      2006-01-11 13:39:43.000000000 -0500
@@ -1,13 +1,13 @@
 Bug#: 77194
 Product: Mono: Class Libraries
 Version: 1.1
 OS: All
 OS Details: OSX 10.4.3 and Ubuntu Dapper
-Status: REOPENED   
-Resolution: 
+Status: RESOLVED   
+Resolution: NOTABUG
 Severity: Unknown
 Priority: Normal
 Component: Sys.XML
 AssignedTo: [EMAIL PROTECTED]                            
 ReportedBy: [EMAIL PROTECTED]               
 QAContact: [EMAIL PROTECTED]
@@ -275,6 +275,80 @@
 
 aha, am so stupid ;-) Thanks, lemme try them later.
 
 ------- Additional Comments From [EMAIL PROTECTED]  2006-01-11 05:57 -------
 God knows, my brain isn't always remembering stuff either ;-) Thanks
 for the quick replies Atsushi!
+
+------- Additional Comments From [EMAIL PROTECTED]  2006-01-11 13:39 -------
+That error is thrown when the argument XPathNavigator implementation
+(this case DotNetGuru.AspectDNG.XPath.Navigator) is buggy enough to
+fail to move to parent nodes by MoveToParent().
+
+In other words, DescendantOrSelfIterator is kind enough to report
+users' XPathNavigator implementation bugs. Microsoft implementation
+would just ignore such cases and it returns false (and users won't
+understand what is going on there).
+
+AspectDNG XPathNavigator is buggy. At the first call to
+Navigator.MoveToFirstChild() changes the state from Root to Element
+(pointing to m_rootElement). But when Navigator.MoveToParent() is
+invoked, it just tries to get "Parent" of m_rootElement and thus it
+never moves to Root state.
+
+To verify my conviction ;-) you can try this patch to system.xml
+below. Build (without install) and run 
+MONO_PATH=/path/to/your_own_build/mcs/class/lib/default mono
+aspectdng.exe mySample.exe myAspects.dll
+
+
+Index: System.Xml.XPath/Iterator.cs
+===================================================================
+--- System.Xml.XPath/Iterator.cs       (revision 55374)
++++ System.Xml.XPath/Iterator.cs       (working copy)
+@@ -555,9 +555,11 @@
+                               Current.MoveTo (_nav);
+                               return true;
+                       }
++Console.Error.Write ("**** {3} now node is {0} {1} {2}",
+_nav.NodeType, _nav.LocalName, _nav.NamespaceURI, _nav.GetHashCode ());
+                       if (_nav.MoveToFirstChild ())
+                       {
+                               _depth ++;
++Console.Error.WriteLine ("/ moved to first child, depth is now at : "
++ _depth);
+                               Current.MoveTo (_nav);
+                               return true;
+                       }
+@@ -569,8 +571,9 @@
+                                       return true;
+                               }
+                               if (!_nav.MoveToParent ())      // should NEVER 
fail!
+-                                      throw new XPathException ("There seems 
some bugs on the
+XPathNavigator implementation class.");
++                                      throw new XPathException ("There seems 
some bugs on the
+XPathNavigator implementation class:" + _nav.GetType ());
+                               _depth --;
++Console.Error.WriteLine (" / moved to parent, depth is now at " +
+_depth + ", nav is {0} {1} {2}", _nav.NodeType, _nav.LocalName,
+_nav.NamespaceURI);
+                       }
+                       _finished = true;
+                       return false;
+
+Here is the fix for aspectdng. After this fix it should work fine (of
+course feel free to feedback it to aspectdng guys):
+
+                public override bool MoveToParent() {
+                        if (m_NodeType == XPathNodeType.Root)
+                                return false;
+
+                        if (m_CurrentElement.Parent != null){
+                                MoveTo(m_CurrentElement.Parent);
+                        }
+                        else {
+                                m_CurrentElement = m_RootElement;
+                                m_NodeType = XPathNodeType.Root;
+                        }
+                        return true;
+                }
+
_______________________________________________
mono-bugs maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-bugs

Reply via email to