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/ChangeLog b/ChangeLog
index 556bb7c..70b842c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Tue Aug 14 14:16:24 CEST 2001 Daniel Veillard <daniel@veillard.com>
+
+ * xpath.c: count() was broken on Result Value Tree
+ * xmlIO.c: fixed file:/// accesses on _WIN32
+
Mon Aug 13 13:22:53 CEST 2001 Daniel Veillard <daniel@veillard.com>
* libxml.m4: s/LIBXML_VERSION_NUMBER/LIBXML_VERSION/ seems the
diff --git a/xmlIO.c b/xmlIO.c
index c21a168..b78ccbe 100644
--- a/xmlIO.c
+++ b/xmlIO.c
@@ -244,9 +244,13 @@
if (!strncmp(filename, "file://localhost", 16))
path = &filename[16];
- else if (!strncmp(filename, "file:///", 8))
+ else if (!strncmp(filename, "file:///", 8)) {
+#ifdef _WIN32
+ path = &filename[8];
+#else
path = &filename[7];
- else
+#endif
+ } else
path = filename;
if (path == NULL)
@@ -283,9 +287,13 @@
if (!strncmp(filename, "file://localhost", 16))
path = &filename[16];
- else if (!strncmp(filename, "file:///", 8))
+ else if (!strncmp(filename, "file:///", 8)) {
+#ifdef _WIN32
+ path = &filename[8];
+#else
path = &filename[7];
- else
+#endif
+ } else
path = filename;
if (path == NULL)
@@ -387,9 +395,13 @@
if (!strncmp(filename, "file://localhost", 16))
path = &filename[16];
- else if (!strncmp(filename, "file:///", 8))
+ else if (!strncmp(filename, "file:///", 8)) {
+#ifdef _WIN32
+ path = &filename[8];
+#else
path = &filename[7];
- else
+#endif
+ } else
path = filename;
if (path == NULL)
@@ -425,9 +437,13 @@
if (!strncmp(filename, "file://localhost", 16))
path = &filename[16];
- else if (!strncmp(filename, "file:///", 8))
+ else if (!strncmp(filename, "file:///", 8)) {
+#ifdef _WIN32
+ path = &filename[8];
+#else
path = &filename[7];
- else
+#endif
+ } else
path = filename;
if (path == NULL)
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);
}