Index: xpath.c =================================================================== RCS file: /cvs/gnome/gnome-xml/xpath.c,v retrieving revision 1.276 diff -u -r1.276 xpath.c --- xpath.c 12 Nov 2004 16:03:48 -0000 1.276 +++ xpath.c 14 Nov 2004 17:29:55 -0000 @@ -1656,9 +1656,30 @@ return(-1); } - for (cur = node1->next;cur != NULL;cur = cur->next) - if (cur == node2) - return(1); + if (node1->doc == node2->doc) { + cur = node1->next; + while (cur != NULL) { + if (cur == node2) return(1); + if ((cur->type == XML_ELEMENT_NODE) && (0>(long) cur->content)) { + xmlNodePtr cur2; + cur2 = node2->prev; + while (cur2 != NULL) { + if (cur2 == cur) return(1); + if ((cur2->type == XML_ELEMENT_NODE) && (0>(long) cur2->content)) { + long l1, l2; + l1 = -((long) cur->content); + l2 = -((long) cur2->content); + if (l1 < l2) return(1); + if (l1 > l2) return(-1); + return 0; + } + cur2 = cur2->prev; + } + return(-1); /* assume there is no sibling list corruption */ + } + cur = cur->next; + } + } return(-1); /* assume there is no sibling list corruption */ }