fixed problem pointed out by Stéphane Bidoul on the list. completed
* python/generator.py, python/libxml2class.txt: fixed problem
pointed out by Stéphane Bidoul on the list.
* xinclude.c, xpointer.c, xpath.c, include/libxml/xpointer.h:
completed modifications required to fix Bug 129967 (at last!).
Now wait to see how long before further trouble...
diff --git a/xpointer.c b/xpointer.c
index adc854c..145b134 100644
--- a/xpointer.c
+++ b/xpointer.c
@@ -123,7 +123,8 @@
* A few helper functions for child sequences *
* *
************************************************************************/
-
+/* xmlXPtrAdvanceNode is a private function, but used by xinclude.c */
+xmlNodePtr xmlXPtrAdvanceNode(xmlNodePtr cur, int *level);
/**
* xmlXPtrGetArity:
* @cur: the node
@@ -1582,7 +1583,7 @@
STRANGE
return(NULL);
}
- cur = xmlXPtrAdvanceNode(cur);
+ cur = xmlXPtrAdvanceNode(cur, NULL);
}
return(list);
}
@@ -2296,12 +2297,14 @@
* Returns -1 in case of failure, 0 otherwise
*/
xmlNodePtr
-xmlXPtrAdvanceNode(xmlNodePtr cur) {
+xmlXPtrAdvanceNode(xmlNodePtr cur, int *level) {
next:
if (cur == NULL)
return(NULL);
if (cur->children != NULL) {
cur = cur->children ;
+ if (level != NULL)
+ (*level)++;
goto found;
}
if (cur->next != NULL) {
@@ -2310,6 +2313,8 @@
}
do {
cur = cur->parent;
+ if (level != NULL)
+ (*level)--;
if (cur == NULL) return(NULL);
if (cur->next != NULL) {
cur = cur->next;
@@ -2366,7 +2371,7 @@
cur = xmlXPtrGetNthChild(cur, pos);
pos = 0;
} else {
- cur = xmlXPtrAdvanceNode(cur);
+ cur = xmlXPtrAdvanceNode(cur, NULL);
pos = 0;
}
}
@@ -2401,7 +2406,7 @@
}
if (pos + bytes >= len) {
bytes -= (len - pos);
- cur = xmlXPtrAdvanceNode(cur);
+ cur = xmlXPtrAdvanceNode(cur, NULL);
cur = 0;
} else if (pos + bytes < len) {
pos += bytes;
@@ -2490,7 +2495,7 @@
}
}
}
- cur = xmlXPtrAdvanceNode(cur);
+ cur = xmlXPtrAdvanceNode(cur, NULL);
if (cur == NULL)
return(0);
pos = 0;
@@ -2583,7 +2588,7 @@
}
if ((cur == *end) && (pos >= *endindex))
return(0);
- cur = xmlXPtrAdvanceNode(cur);
+ cur = xmlXPtrAdvanceNode(cur, NULL);
if (cur == NULL)
return(0);
pos = 1;