count() was broken on Result Value Tree fixed file:/// accesses on _WIN32
* xpath.c: count() was broken on Result Value Tree
* xmlIO.c: fixed file:/// accesses on _WIN32
Daniel
diff --git a/xpath.c b/xpath.c
index 1c8c1a8..2de4e1d 100644
--- a/xpath.c
+++ b/xpath.c
@@ -5193,8 +5193,27 @@
if ((cur == NULL) || (cur->nodesetval == NULL))
valuePush(ctxt, xmlXPathNewFloat((double) 0));
- else
+ else if (cur->type == XPATH_NODESET) {
valuePush(ctxt, xmlXPathNewFloat((double) cur->nodesetval->nodeNr));
+ } else {
+ if ((cur->nodesetval->nodeNr != 1) ||
+ (cur->nodesetval->nodeTab == NULL)) {
+ valuePush(ctxt, xmlXPathNewFloat((double) 0));
+ } else {
+ xmlNodePtr tmp;
+ int i = 0;
+
+ tmp = cur->nodesetval->nodeTab[0];
+ if (tmp != NULL) {
+ tmp = tmp->children;
+ while (tmp != NULL) {
+ tmp = tmp->next;
+ i++;
+ }
+ }
+ valuePush(ctxt, xmlXPathNewFloat((double) i));
+ }
+ }
xmlXPathFreeObject(cur);
}