Index: third_party/libxml/xpath.c |
diff --git a/third_party/libxml/xpath.c b/third_party/libxml/xpath.c |
index a52c44aa10797cf878fe44f4c687c9caefe8192a..8482c40b958c2def92e4de1533c05332abefe06a 100644 |
--- a/third_party/libxml/xpath.c |
+++ b/third_party/libxml/xpath.c |
@@ -59,7 +59,7 @@ |
#define XPATH_STREAMING |
#endif |
-#define TODO \ |
+#define TODO \ |
xmlGenericError(xmlGenericErrorContext, \ |
"Unimplemented block at %s:%d\n", \ |
__FILE__, __LINE__); |
@@ -79,7 +79,7 @@ |
* XP_OPTIMIZED_FILTER_FIRST: |
* If defined, this will optimize expressions like "key('foo', 'val')[b][1]" |
* in a way, that it stop evaluation at the first node. |
-*/ |
+*/ |
#define XP_OPTIMIZED_FILTER_FIRST |
/* |
@@ -99,9 +99,9 @@ |
#if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) |
/************************************************************************ |
- * * |
- * Floating point stuff * |
- * * |
+ * * |
+ * Floating point stuff * |
+ * * |
************************************************************************/ |
#ifndef TRIO_REPLACE_STDIO |
@@ -142,7 +142,7 @@ xmlXPathInit(void) { |
* Provides a portable isnan() function to detect whether a double |
* is a NotaNumber. Based on trio code |
* http://sourceforge.net/projects/ctrio/ |
- * |
+ * |
* Returns 1 if the value is a NaN, 0 otherwise |
*/ |
int |
@@ -157,7 +157,7 @@ xmlXPathIsNaN(double val) { |
* Provides a portable isinf() function to detect whether a double |
* is a +Infinite or -Infinite. Based on trio code |
* http://sourceforge.net/projects/ctrio/ |
- * |
+ * |
* Returns 1 vi the value is +Infinite, -1 if -Infinite, 0 otherwise |
*/ |
int |
@@ -174,7 +174,7 @@ xmlXPathIsInf(double val) { |
* Provides a portable function to detect the sign of a double |
* Modified from trio code |
* http://sourceforge.net/projects/ctrio/ |
- * |
+ * |
* Returns 1 if the value is Negative, 0 if positive |
*/ |
static int |
@@ -187,11 +187,11 @@ xmlXPathGetSign(double val) { |
* TODO: when compatibility allows remove all "fake node libxslt" strings |
* the test should just be name[0] = ' ' |
*/ |
-/* #define DEBUG */ |
-/* #define DEBUG_STEP */ |
-/* #define DEBUG_STEP_NTH */ |
-/* #define DEBUG_EXPR */ |
-/* #define DEBUG_EVAL_COUNTS */ |
+#ifdef DEBUG_XPATH_EXPRESSION |
+#define DEBUG_STEP |
+#define DEBUG_EXPR |
+#define DEBUG_EVAL_COUNTS |
+#endif |
static xmlNs xmlXPathXMLNamespaceStruct = { |
NULL, |
@@ -203,7 +203,7 @@ static xmlNs xmlXPathXMLNamespaceStruct = { |
}; |
static xmlNsPtr xmlXPathXMLNamespace = &xmlXPathXMLNamespaceStruct; |
#ifndef LIBXML_THREAD_ENABLED |
-/* |
+/* |
* Optimizer is disabled only when threaded apps are detected while |
* the library ain't compiled for thread safety. |
*/ |
@@ -334,7 +334,7 @@ xmlXPathErr(xmlXPathParserContextPtr ctxt, int error) |
error + XML_XPATH_EXPRESSION_OK - XPATH_EXPRESSION_OK, |
XML_ERR_ERROR, NULL, 0, |
NULL, NULL, NULL, 0, 0, |
- xmlXPathErrorMessages[error]); |
+ "%s", xmlXPathErrorMessages[error]); |
return; |
} |
ctxt->error = error; |
@@ -345,12 +345,12 @@ xmlXPathErr(xmlXPathParserContextPtr ctxt, int error) |
XML_ERR_ERROR, NULL, 0, |
(const char *) ctxt->base, NULL, NULL, |
ctxt->cur - ctxt->base, 0, |
- xmlXPathErrorMessages[error]); |
+ "%s", xmlXPathErrorMessages[error]); |
return; |
} |
/* cleanup current last error */ |
- xmlResetError(&ctxt->context->lastError); |
+ xmlResetError(&ctxt->context->lastError); |
ctxt->context->lastError.domain = XML_FROM_XPATH; |
ctxt->context->lastError.code = error + XML_XPATH_EXPRESSION_OK - |
@@ -369,7 +369,7 @@ xmlXPathErr(xmlXPathParserContextPtr ctxt, int error) |
XML_ERR_ERROR, NULL, 0, |
(const char *) ctxt->base, NULL, NULL, |
ctxt->cur - ctxt->base, 0, |
- xmlXPathErrorMessages[error]); |
+ "%s", xmlXPathErrorMessages[error]); |
} |
} |
@@ -390,9 +390,9 @@ xmlXPatherror(xmlXPathParserContextPtr ctxt, const char *file ATTRIBUTE_UNUSED, |
} |
/************************************************************************ |
- * * |
- * Utilities * |
- * * |
+ * * |
+ * Utilities * |
+ * * |
************************************************************************/ |
/** |
@@ -412,7 +412,7 @@ struct _xmlPointerList { |
* and here, we should make the functions public. |
*/ |
static int |
-xmlPointerListAddSize(xmlPointerListPtr list, |
+xmlPointerListAddSize(xmlPointerListPtr list, |
void *item, |
int initialSize) |
{ |
@@ -486,9 +486,9 @@ xmlPointerListFree(xmlPointerListPtr list) |
} |
/************************************************************************ |
- * * |
- * Parser Types * |
- * * |
+ * * |
+ * Parser Types * |
+ * * |
************************************************************************/ |
/* |
@@ -533,7 +533,7 @@ typedef enum { |
AXIS_PARENT, |
AXIS_PRECEDING, |
AXIS_PRECEDING_SIBLING, |
- AXIS_SELF |
+ AXIS_SELF |
} xmlXPathAxisVal; |
typedef enum { |
@@ -549,7 +549,7 @@ typedef enum { |
NODE_TYPE_NODE = 0, |
NODE_TYPE_COMMENT = XML_COMMENT_NODE, |
NODE_TYPE_TEXT = XML_TEXT_NODE, |
- NODE_TYPE_PI = XML_PI_NODE |
+ NODE_TYPE_PI = XML_PI_NODE |
} xmlXPathTypeVal; |
#define XP_REWRITE_DOS_CHILD_ELEM 1 |
@@ -587,9 +587,9 @@ struct _xmlXPathCompExpr { |
}; |
/************************************************************************ |
- * * |
- * Forward declarations * |
- * * |
+ * * |
+ * Forward declarations * |
+ * * |
************************************************************************/ |
static void |
xmlXPathFreeValueTree(xmlNodeSetPtr obj); |
@@ -604,9 +604,9 @@ xmlXPathCompOpEvalToBoolean(xmlXPathParserContextPtr ctxt, |
int isPredicate); |
/************************************************************************ |
- * * |
- * Parser Type functions * |
- * * |
+ * * |
+ * Parser Type functions * |
+ * * |
************************************************************************/ |
/** |
@@ -796,19 +796,19 @@ xmlXPathCompSwap(xmlXPathStepOpPtr op) { |
xmlXPathCompExprAdd(ctxt->comp, ctxt->comp->last, -1, \ |
(op), (val), (val2), (val3), (val4), (val5)) |
-#define PUSH_LEAVE_EXPR(op, val, val2) \ |
+#define PUSH_LEAVE_EXPR(op, val, val2) \ |
xmlXPathCompExprAdd(ctxt->comp, -1, -1, (op), (val), (val2), 0 ,NULL ,NULL) |
-#define PUSH_UNARY_EXPR(op, ch, val, val2) \ |
+#define PUSH_UNARY_EXPR(op, ch, val, val2) \ |
xmlXPathCompExprAdd(ctxt->comp, (ch), -1, (op), (val), (val2), 0 ,NULL ,NULL) |
-#define PUSH_BINARY_EXPR(op, ch1, ch2, val, val2) \ |
+#define PUSH_BINARY_EXPR(op, ch1, ch2, val, val2) \ |
xmlXPathCompExprAdd(ctxt->comp, (ch1), (ch2), (op), \ |
(val), (val2), 0 ,NULL ,NULL) |
/************************************************************************ |
* * |
- * XPath object cache structures * |
+ * XPath object cache structures * |
* * |
************************************************************************/ |
@@ -840,8 +840,8 @@ struct _xmlXPathContextCache { |
int dbgCachedLocset; |
int dbgCachedUsers; |
int dbgCachedXSLTTree; |
- int dbgCachedUndefined; |
- |
+ int dbgCachedUndefined; |
+ |
int dbgReusedAll; |
int dbgReusedNodeset; |
@@ -860,11 +860,11 @@ struct _xmlXPathContextCache { |
/************************************************************************ |
* * |
- * Debugging related functions * |
+ * Debugging related functions * |
* * |
************************************************************************/ |
-#define STRANGE \ |
+#define STRANGE \ |
xmlGenericError(xmlGenericErrorContext, \ |
"Internal error at %s:%d\n", \ |
__FILE__, __LINE__); |
@@ -879,15 +879,15 @@ xmlXPathDebugDumpNode(FILE *output, xmlNodePtr cur, int depth) { |
shift[2 * i] = shift[2 * i + 1] = ' '; |
shift[2 * i] = shift[2 * i + 1] = 0; |
if (cur == NULL) { |
- fprintf(output, shift); |
+ fprintf(output, "%s", shift); |
fprintf(output, "Node is NULL !\n"); |
return; |
- |
+ |
} |
if ((cur->type == XML_DOCUMENT_NODE) || |
(cur->type == XML_HTML_DOCUMENT_NODE)) { |
- fprintf(output, shift); |
+ fprintf(output, "%s", shift); |
fprintf(output, " /\n"); |
} else if (cur->type == XML_ATTRIBUTE_NODE) |
xmlDebugDumpAttr(output, (xmlAttrPtr)cur, depth); |
@@ -904,10 +904,10 @@ xmlXPathDebugDumpNodeList(FILE *output, xmlNodePtr cur, int depth) { |
shift[2 * i] = shift[2 * i + 1] = ' '; |
shift[2 * i] = shift[2 * i + 1] = 0; |
if (cur == NULL) { |
- fprintf(output, shift); |
+ fprintf(output, "%s", shift); |
fprintf(output, "Node is NULL !\n"); |
return; |
- |
+ |
} |
while (cur != NULL) { |
@@ -927,16 +927,16 @@ xmlXPathDebugDumpNodeSet(FILE *output, xmlNodeSetPtr cur, int depth) { |
shift[2 * i] = shift[2 * i + 1] = 0; |
if (cur == NULL) { |
- fprintf(output, shift); |
+ fprintf(output, "%s", shift); |
fprintf(output, "NodeSet is NULL !\n"); |
return; |
- |
+ |
} |
if (cur != NULL) { |
fprintf(output, "Set contains %d nodes:\n", cur->nodeNr); |
for (i = 0;i < cur->nodeNr;i++) { |
- fprintf(output, shift); |
+ fprintf(output, "%s", shift); |
fprintf(output, "%d", i + 1); |
xmlXPathDebugDumpNode(output, cur->nodeTab[i], depth + 1); |
} |
@@ -953,13 +953,13 @@ xmlXPathDebugDumpValueTree(FILE *output, xmlNodeSetPtr cur, int depth) { |
shift[2 * i] = shift[2 * i + 1] = 0; |
if ((cur == NULL) || (cur->nodeNr == 0) || (cur->nodeTab[0] == NULL)) { |
- fprintf(output, shift); |
+ fprintf(output, "%s", shift); |
fprintf(output, "Value Tree is NULL !\n"); |
return; |
- |
+ |
} |
- fprintf(output, shift); |
+ fprintf(output, "%s", shift); |
fprintf(output, "%d", i + 1); |
xmlXPathDebugDumpNodeList(output, cur->nodeTab[0]->children, depth + 1); |
} |
@@ -974,14 +974,14 @@ xmlXPathDebugDumpLocationSet(FILE *output, xmlLocationSetPtr cur, int depth) { |
shift[2 * i] = shift[2 * i + 1] = 0; |
if (cur == NULL) { |
- fprintf(output, shift); |
+ fprintf(output, "%s", shift); |
fprintf(output, "LocationSet is NULL !\n"); |
return; |
- |
+ |
} |
for (i = 0;i < cur->locNr;i++) { |
- fprintf(output, shift); |
+ fprintf(output, "%s", shift); |
fprintf(output, "%d : ", i + 1); |
xmlXPathDebugDumpObject(output, cur->locTab[i], depth + 1); |
} |
@@ -1008,7 +1008,7 @@ xmlXPathDebugDumpObject(FILE *output, xmlXPathObjectPtr cur, int depth) { |
shift[2 * i] = shift[2 * i + 1] = 0; |
- fprintf(output, shift); |
+ fprintf(output, "%s", shift); |
if (cur == NULL) { |
fprintf(output, "Object is empty (NULL)\n"); |
@@ -1063,7 +1063,7 @@ xmlXPathDebugDumpObject(FILE *output, xmlXPathObjectPtr cur, int depth) { |
if ((cur->user2 == NULL) || |
((cur->user2 == cur->user) && (cur->index == cur->index2))) { |
fprintf(output, "Object is a collapsed range :\n"); |
- fprintf(output, shift); |
+ fprintf(output, "%s", shift); |
if (cur->index >= 0) |
fprintf(output, "index %d in ", cur->index); |
fprintf(output, "node\n"); |
@@ -1071,14 +1071,14 @@ xmlXPathDebugDumpObject(FILE *output, xmlXPathObjectPtr cur, int depth) { |
depth + 1); |
} else { |
fprintf(output, "Object is a range :\n"); |
- fprintf(output, shift); |
+ fprintf(output, "%s", shift); |
fprintf(output, "From "); |
if (cur->index >= 0) |
fprintf(output, "index %d in ", cur->index); |
fprintf(output, "node\n"); |
xmlXPathDebugDumpNode(output, (xmlNodePtr) cur->user, |
depth + 1); |
- fprintf(output, shift); |
+ fprintf(output, "%s", shift); |
fprintf(output, "To "); |
if (cur->index2 >= 0) |
fprintf(output, "index %d in ", cur->index2); |
@@ -1111,7 +1111,7 @@ xmlXPathDebugDumpStepOp(FILE *output, xmlXPathCompExprPtr comp, |
shift[2 * i] = shift[2 * i + 1] = ' '; |
shift[2 * i] = shift[2 * i + 1] = 0; |
- fprintf(output, shift); |
+ fprintf(output, "%s", shift); |
if (op == NULL) { |
fprintf(output, "Step is NULL\n"); |
return; |
@@ -1298,7 +1298,7 @@ xmlXPathDebugDumpCompExpr(FILE *output, xmlXPathCompExprPtr comp, |
shift[2 * i] = shift[2 * i + 1] = ' '; |
shift[2 * i] = shift[2 * i + 1] = 0; |
- fprintf(output, shift); |
+ fprintf(output, "%s", shift); |
fprintf(output, "Compiled Expression : %d elements\n", |
comp->nbStep); |
@@ -1333,7 +1333,7 @@ static int xmlXPathDebugObjTotalRange = 0; |
static int xmlXPathDebugObjTotalLocset = 0; |
static int xmlXPathDebugObjTotalUsers = 0; |
static int xmlXPathDebugObjTotalXSLTTree = 0; |
-static int xmlXPathDebugObjTotalAll = 0; |
+static int xmlXPathDebugObjTotalAll = 0; |
static int xmlXPathDebugObjMaxUndefined = 0; |
static int xmlXPathDebugObjMaxNodeset = 0; |
@@ -1366,7 +1366,7 @@ xmlXPathDebugObjUsageReset(xmlXPathContextPtr ctxt) |
cache->dbgCachedLocset = 0; |
cache->dbgCachedUsers = 0; |
cache->dbgCachedXSLTTree = 0; |
- cache->dbgCachedUndefined = 0; |
+ cache->dbgCachedUndefined = 0; |
cache->dbgReusedAll = 0; |
cache->dbgReusedNodeset = 0; |
@@ -1380,7 +1380,7 @@ xmlXPathDebugObjUsageReset(xmlXPathContextPtr ctxt) |
cache->dbgReusedXSLTTree = 0; |
cache->dbgReusedUndefined = 0; |
} |
- } |
+ } |
xmlXPathDebugObjCounterUndefined = 0; |
xmlXPathDebugObjCounterNodeset = 0; |
@@ -1393,7 +1393,7 @@ xmlXPathDebugObjUsageReset(xmlXPathContextPtr ctxt) |
xmlXPathDebugObjCounterUsers = 0; |
xmlXPathDebugObjCounterXSLTTree = 0; |
xmlXPathDebugObjCounterAll = 0; |
- |
+ |
xmlXPathDebugObjTotalUndefined = 0; |
xmlXPathDebugObjTotalNodeset = 0; |
xmlXPathDebugObjTotalBool = 0; |
@@ -1404,7 +1404,7 @@ xmlXPathDebugObjUsageReset(xmlXPathContextPtr ctxt) |
xmlXPathDebugObjTotalLocset = 0; |
xmlXPathDebugObjTotalUsers = 0; |
xmlXPathDebugObjTotalXSLTTree = 0; |
- xmlXPathDebugObjTotalAll = 0; |
+ xmlXPathDebugObjTotalAll = 0; |
xmlXPathDebugObjMaxUndefined = 0; |
xmlXPathDebugObjMaxNodeset = 0; |
@@ -1430,10 +1430,10 @@ xmlXPathDebugObjUsageRequested(xmlXPathContextPtr ctxt, |
if (ctxt->cache != NULL) { |
xmlXPathContextCachePtr cache = |
(xmlXPathContextCachePtr) ctxt->cache; |
- |
+ |
isCached = 1; |
- |
- cache->dbgReusedAll++; |
+ |
+ cache->dbgReusedAll++; |
switch (objType) { |
case XPATH_UNDEFINED: |
cache->dbgReusedUndefined++; |
@@ -1467,7 +1467,7 @@ xmlXPathDebugObjUsageRequested(xmlXPathContextPtr ctxt, |
break; |
default: |
break; |
- } |
+ } |
} |
} |
@@ -1475,7 +1475,7 @@ xmlXPathDebugObjUsageRequested(xmlXPathContextPtr ctxt, |
case XPATH_UNDEFINED: |
if (! isCached) |
xmlXPathDebugObjTotalUndefined++; |
- xmlXPathDebugObjCounterUndefined++; |
+ xmlXPathDebugObjCounterUndefined++; |
if (xmlXPathDebugObjCounterUndefined > |
xmlXPathDebugObjMaxUndefined) |
xmlXPathDebugObjMaxUndefined = |
@@ -1484,7 +1484,7 @@ xmlXPathDebugObjUsageRequested(xmlXPathContextPtr ctxt, |
case XPATH_NODESET: |
if (! isCached) |
xmlXPathDebugObjTotalNodeset++; |
- xmlXPathDebugObjCounterNodeset++; |
+ xmlXPathDebugObjCounterNodeset++; |
if (xmlXPathDebugObjCounterNodeset > |
xmlXPathDebugObjMaxNodeset) |
xmlXPathDebugObjMaxNodeset = |
@@ -1493,7 +1493,7 @@ xmlXPathDebugObjUsageRequested(xmlXPathContextPtr ctxt, |
case XPATH_BOOLEAN: |
if (! isCached) |
xmlXPathDebugObjTotalBool++; |
- xmlXPathDebugObjCounterBool++; |
+ xmlXPathDebugObjCounterBool++; |
if (xmlXPathDebugObjCounterBool > |
xmlXPathDebugObjMaxBool) |
xmlXPathDebugObjMaxBool = |
@@ -1502,7 +1502,7 @@ xmlXPathDebugObjUsageRequested(xmlXPathContextPtr ctxt, |
case XPATH_NUMBER: |
if (! isCached) |
xmlXPathDebugObjTotalNumber++; |
- xmlXPathDebugObjCounterNumber++; |
+ xmlXPathDebugObjCounterNumber++; |
if (xmlXPathDebugObjCounterNumber > |
xmlXPathDebugObjMaxNumber) |
xmlXPathDebugObjMaxNumber = |
@@ -1511,7 +1511,7 @@ xmlXPathDebugObjUsageRequested(xmlXPathContextPtr ctxt, |
case XPATH_STRING: |
if (! isCached) |
xmlXPathDebugObjTotalString++; |
- xmlXPathDebugObjCounterString++; |
+ xmlXPathDebugObjCounterString++; |
if (xmlXPathDebugObjCounterString > |
xmlXPathDebugObjMaxString) |
xmlXPathDebugObjMaxString = |
@@ -1520,7 +1520,7 @@ xmlXPathDebugObjUsageRequested(xmlXPathContextPtr ctxt, |
case XPATH_POINT: |
if (! isCached) |
xmlXPathDebugObjTotalPoint++; |
- xmlXPathDebugObjCounterPoint++; |
+ xmlXPathDebugObjCounterPoint++; |
if (xmlXPathDebugObjCounterPoint > |
xmlXPathDebugObjMaxPoint) |
xmlXPathDebugObjMaxPoint = |
@@ -1547,7 +1547,7 @@ xmlXPathDebugObjUsageRequested(xmlXPathContextPtr ctxt, |
case XPATH_USERS: |
if (! isCached) |
xmlXPathDebugObjTotalUsers++; |
- xmlXPathDebugObjCounterUsers++; |
+ xmlXPathDebugObjCounterUsers++; |
if (xmlXPathDebugObjCounterUsers > |
xmlXPathDebugObjMaxUsers) |
xmlXPathDebugObjMaxUsers = |
@@ -1556,7 +1556,7 @@ xmlXPathDebugObjUsageRequested(xmlXPathContextPtr ctxt, |
case XPATH_XSLT_TREE: |
if (! isCached) |
xmlXPathDebugObjTotalXSLTTree++; |
- xmlXPathDebugObjCounterXSLTTree++; |
+ xmlXPathDebugObjCounterXSLTTree++; |
if (xmlXPathDebugObjCounterXSLTTree > |
xmlXPathDebugObjMaxXSLTTree) |
xmlXPathDebugObjMaxXSLTTree = |
@@ -1585,8 +1585,8 @@ xmlXPathDebugObjUsageReleased(xmlXPathContextPtr ctxt, |
xmlXPathContextCachePtr cache = |
(xmlXPathContextCachePtr) ctxt->cache; |
- isCached = 1; |
- |
+ isCached = 1; |
+ |
cache->dbgCachedAll++; |
switch (objType) { |
case XPATH_UNDEFINED: |
@@ -1622,7 +1622,7 @@ xmlXPathDebugObjUsageReleased(xmlXPathContextPtr ctxt, |
default: |
break; |
} |
- |
+ |
} |
} |
switch (objType) { |
@@ -1658,7 +1658,7 @@ xmlXPathDebugObjUsageReleased(xmlXPathContextPtr ctxt, |
break; |
default: |
break; |
- } |
+ } |
xmlXPathDebugObjCounterAll--; |
} |
@@ -1681,7 +1681,7 @@ xmlXPathDebugObjUsageDisplay(xmlXPathContextPtr ctxt) |
reqNumber = xmlXPathDebugObjTotalNumber; |
reqXSLTTree = xmlXPathDebugObjTotalXSLTTree; |
reqUndefined = xmlXPathDebugObjTotalUndefined; |
- |
+ |
printf("# XPath object usage:\n"); |
if (ctxt != NULL) { |
@@ -1703,7 +1703,7 @@ xmlXPathDebugObjUsageDisplay(xmlXPathContextPtr ctxt) |
reqXSLTTree += reXSLTTree; |
reUndefined = cache->dbgReusedUndefined; |
reqUndefined += reUndefined; |
- |
+ |
caAll = cache->dbgCachedAll; |
caBool = cache->dbgCachedBool; |
caNodeset = cache->dbgCachedNodeset; |
@@ -1711,7 +1711,7 @@ xmlXPathDebugObjUsageDisplay(xmlXPathContextPtr ctxt) |
caNumber = cache->dbgCachedNumber; |
caXSLTTree = cache->dbgCachedXSLTTree; |
caUndefined = cache->dbgCachedUndefined; |
- |
+ |
if (cache->nodesetObjs) |
leftObjs -= cache->nodesetObjs->number; |
if (cache->stringObjs) |
@@ -1724,8 +1724,8 @@ xmlXPathDebugObjUsageDisplay(xmlXPathContextPtr ctxt) |
leftObjs -= cache->miscObjs->number; |
} |
} |
- |
- printf("# all\n"); |
+ |
+ printf("# all\n"); |
printf("# total : %d\n", reqAll); |
printf("# left : %d\n", leftObjs); |
printf("# created: %d\n", xmlXPathDebugObjTotalAll); |
@@ -1848,7 +1848,7 @@ xmlXPathFreeCache(xmlXPathContextCachePtr cache) |
if (cache->numberObjs) |
xmlXPathCacheFreeObjectList(cache->numberObjs); |
if (cache->miscObjs) |
- xmlXPathCacheFreeObjectList(cache->miscObjs); |
+ xmlXPathCacheFreeObjectList(cache->miscObjs); |
xmlFree(cache); |
} |
@@ -1857,7 +1857,7 @@ xmlXPathFreeCache(xmlXPathContextCachePtr cache) |
* |
* @ctxt: the XPath context |
* @active: enables/disables (creates/frees) the cache |
- * @value: a value with semantics dependant on @options |
+ * @value: a value with semantics dependant on @options |
* @options: options (currently only the value 0 is used) |
* |
* Creates/frees an object cache on the XPath context. |
@@ -1884,7 +1884,7 @@ xmlXPathContextSetCache(xmlXPathContextPtr ctxt, |
return(-1); |
if (active) { |
xmlXPathContextCachePtr cache; |
- |
+ |
if (ctxt->cache == NULL) { |
ctxt->cache = xmlXPathNewCache(); |
if (ctxt->cache == NULL) |
@@ -1919,7 +1919,7 @@ xmlXPathContextSetCache(xmlXPathContextPtr ctxt, |
*/ |
static xmlXPathObjectPtr |
xmlXPathCacheWrapNodeSet(xmlXPathContextPtr ctxt, xmlNodeSetPtr val) |
-{ |
+{ |
if ((ctxt != NULL) && (ctxt->cache != NULL)) { |
xmlXPathContextCachePtr cache = |
(xmlXPathContextCachePtr) ctxt->cache; |
@@ -1928,7 +1928,7 @@ xmlXPathCacheWrapNodeSet(xmlXPathContextPtr ctxt, xmlNodeSetPtr val) |
(cache->miscObjs->number != 0)) |
{ |
xmlXPathObjectPtr ret; |
- |
+ |
ret = (xmlXPathObjectPtr) |
cache->miscObjs->items[--cache->miscObjs->number]; |
ret->type = XPATH_NODESET; |
@@ -1936,12 +1936,12 @@ xmlXPathCacheWrapNodeSet(xmlXPathContextPtr ctxt, xmlNodeSetPtr val) |
#ifdef XP_DEBUG_OBJ_USAGE |
xmlXPathDebugObjUsageRequested(ctxt, XPATH_NODESET); |
#endif |
- return(ret); |
+ return(ret); |
} |
} |
- |
+ |
return(xmlXPathWrapNodeSet(val)); |
- |
+ |
} |
/** |
@@ -1956,16 +1956,16 @@ xmlXPathCacheWrapNodeSet(xmlXPathContextPtr ctxt, xmlNodeSetPtr val) |
*/ |
static xmlXPathObjectPtr |
xmlXPathCacheWrapString(xmlXPathContextPtr ctxt, xmlChar *val) |
-{ |
+{ |
if ((ctxt != NULL) && (ctxt->cache != NULL)) { |
xmlXPathContextCachePtr cache = (xmlXPathContextCachePtr) ctxt->cache; |
if ((cache->stringObjs != NULL) && |
(cache->stringObjs->number != 0)) |
{ |
- |
+ |
xmlXPathObjectPtr ret; |
- |
+ |
ret = (xmlXPathObjectPtr) |
cache->stringObjs->items[--cache->stringObjs->number]; |
ret->type = XPATH_STRING; |
@@ -2014,20 +2014,20 @@ xmlXPathCacheNewNodeSet(xmlXPathContextPtr ctxt, xmlNodePtr val) |
if ((cache->nodesetObjs != NULL) && |
(cache->nodesetObjs->number != 0)) |
- { |
+ { |
xmlXPathObjectPtr ret; |
/* |
* Use the nodset-cache. |
- */ |
+ */ |
ret = (xmlXPathObjectPtr) |
cache->nodesetObjs->items[--cache->nodesetObjs->number]; |
ret->type = XPATH_NODESET; |
ret->boolval = 0; |
- if (val) { |
+ if (val) { |
if ((ret->nodesetval->nodeMax == 0) || |
(val->type == XML_NAMESPACE_DECL)) |
{ |
- xmlXPathNodeSetAddUnique(ret->nodesetval, val); |
+ xmlXPathNodeSetAddUnique(ret->nodesetval, val); |
} else { |
ret->nodesetval->nodeTab[0] = val; |
ret->nodesetval->nodeNr = 1; |
@@ -2072,15 +2072,15 @@ xmlXPathCacheNewNodeSet(xmlXPathContextPtr ctxt, xmlNodePtr val) |
*/ |
static xmlXPathObjectPtr |
xmlXPathCacheNewCString(xmlXPathContextPtr ctxt, const char *val) |
-{ |
+{ |
if ((ctxt != NULL) && (ctxt->cache)) { |
xmlXPathContextCachePtr cache = (xmlXPathContextCachePtr) ctxt->cache; |
if ((cache->stringObjs != NULL) && |
(cache->stringObjs->number != 0)) |
- { |
+ { |
xmlXPathObjectPtr ret; |
- |
+ |
ret = (xmlXPathObjectPtr) |
cache->stringObjs->items[--cache->stringObjs->number]; |
@@ -2121,15 +2121,15 @@ xmlXPathCacheNewCString(xmlXPathContextPtr ctxt, const char *val) |
*/ |
static xmlXPathObjectPtr |
xmlXPathCacheNewString(xmlXPathContextPtr ctxt, const xmlChar *val) |
-{ |
+{ |
if ((ctxt != NULL) && (ctxt->cache)) { |
xmlXPathContextCachePtr cache = (xmlXPathContextCachePtr) ctxt->cache; |
if ((cache->stringObjs != NULL) && |
(cache->stringObjs->number != 0)) |
- { |
+ { |
xmlXPathObjectPtr ret; |
- |
+ |
ret = (xmlXPathObjectPtr) |
cache->stringObjs->items[--cache->stringObjs->number]; |
ret->type = XPATH_STRING; |
@@ -2175,15 +2175,15 @@ xmlXPathCacheNewString(xmlXPathContextPtr ctxt, const xmlChar *val) |
*/ |
static xmlXPathObjectPtr |
xmlXPathCacheNewBoolean(xmlXPathContextPtr ctxt, int val) |
-{ |
+{ |
if ((ctxt != NULL) && (ctxt->cache)) { |
xmlXPathContextCachePtr cache = (xmlXPathContextCachePtr) ctxt->cache; |
if ((cache->booleanObjs != NULL) && |
(cache->booleanObjs->number != 0)) |
- { |
+ { |
xmlXPathObjectPtr ret; |
- |
+ |
ret = (xmlXPathObjectPtr) |
cache->booleanObjs->items[--cache->booleanObjs->number]; |
ret->type = XPATH_BOOLEAN; |
@@ -2229,9 +2229,9 @@ xmlXPathCacheNewFloat(xmlXPathContextPtr ctxt, double val) |
if ((cache->numberObjs != NULL) && |
(cache->numberObjs->number != 0)) |
- { |
+ { |
xmlXPathObjectPtr ret; |
- |
+ |
ret = (xmlXPathObjectPtr) |
cache->numberObjs->items[--cache->numberObjs->number]; |
ret->type = XPATH_NUMBER; |
@@ -2273,7 +2273,7 @@ xmlXPathCacheNewFloat(xmlXPathContextPtr ctxt, double val) |
static xmlXPathObjectPtr |
xmlXPathCacheConvertString(xmlXPathContextPtr ctxt, xmlXPathObjectPtr val) { |
- xmlChar *res = NULL; |
+ xmlChar *res = NULL; |
if (val == NULL) |
return(xmlXPathCacheNewCString(ctxt, "")); |
@@ -2357,7 +2357,7 @@ xmlXPathCacheObjectCopy(xmlXPathContextPtr ctxt, xmlXPathObjectPtr val) |
static xmlXPathObjectPtr |
xmlXPathCacheConvertBoolean(xmlXPathContextPtr ctxt, xmlXPathObjectPtr val) { |
xmlXPathObjectPtr ret; |
- |
+ |
if (val == NULL) |
return(xmlXPathCacheNewBoolean(ctxt, 0)); |
if (val->type == XPATH_BOOLEAN) |
@@ -2381,7 +2381,7 @@ xmlXPathCacheConvertBoolean(xmlXPathContextPtr ctxt, xmlXPathObjectPtr val) { |
static xmlXPathObjectPtr |
xmlXPathCacheConvertNumber(xmlXPathContextPtr ctxt, xmlXPathObjectPtr val) { |
xmlXPathObjectPtr ret; |
- |
+ |
if (val == NULL) |
return(xmlXPathCacheNewFloat(ctxt, 0.0)); |
if (val->type == XPATH_NUMBER) |
@@ -2393,7 +2393,7 @@ xmlXPathCacheConvertNumber(xmlXPathContextPtr ctxt, xmlXPathObjectPtr val) { |
/************************************************************************ |
* * |
- * Parser stacks related functions and macros * |
+ * Parser stacks related functions and macros * |
* * |
************************************************************************/ |
@@ -2632,7 +2632,7 @@ xmlXPathPopExternal (xmlXPathParserContextPtr ctxt) { |
#define NEXTL(l) ctxt->cur += l |
-#define SKIP_BLANKS \ |
+#define SKIP_BLANKS \ |
while (IS_BLANK_CH(*(ctxt->cur))) NEXT |
#define CURRENT (*ctxt->cur) |
@@ -3001,17 +3001,17 @@ xmlXPathCmpNodesExt(xmlNodePtr node1, xmlNodePtr node2) { |
if (node1 == node2) |
return(0); |
- |
+ |
/* |
* a couple of optimizations which will avoid computations in most cases |
- */ |
+ */ |
switch (node1->type) { |
case XML_ELEMENT_NODE: |
if (node2->type == XML_ELEMENT_NODE) { |
if ((0 > (long) node1->content) && /* TODO: Would a != 0 suffice here? */ |
(0 > (long) node2->content) && |
(node1->doc == node2->doc)) |
- { |
+ { |
l1 = -((long) node1->content); |
l2 = -((long) node2->content); |
if (l1 < l2) |
@@ -3019,7 +3019,7 @@ xmlXPathCmpNodesExt(xmlNodePtr node1, xmlNodePtr node2) { |
if (l1 > l2) |
return(-1); |
} else |
- goto turtle_comparison; |
+ goto turtle_comparison; |
} |
break; |
case XML_ATTRIBUTE_NODE: |
@@ -3035,7 +3035,7 @@ xmlXPathCmpNodesExt(xmlNodePtr node1, xmlNodePtr node2) { |
miscNode1 = node1; |
/* |
* Find nearest element node. |
- */ |
+ */ |
if (node1->prev != NULL) { |
do { |
node1 = node1->prev; |
@@ -3075,9 +3075,9 @@ xmlXPathCmpNodesExt(xmlNodePtr node1, xmlNodePtr node2) { |
return(1); |
default: |
break; |
- } |
+ } |
switch (node2->type) { |
- case XML_ELEMENT_NODE: |
+ case XML_ELEMENT_NODE: |
break; |
case XML_ATTRIBUTE_NODE: |
precedence2 = 1; /* element is owner */ |
@@ -3106,7 +3106,7 @@ xmlXPathCmpNodesExt(xmlNodePtr node1, xmlNodePtr node2) { |
} else { |
precedence2 = 2; /* element is parent */ |
node2 = node2->parent; |
- } |
+ } |
if ((node2 == NULL) || (node2->type != XML_ELEMENT_NODE) || |
(0 <= (long) node1->content)) |
{ |
@@ -3144,11 +3144,11 @@ xmlXPathCmpNodesExt(xmlNodePtr node1, xmlNodePtr node2) { |
* Is this 100% correct? |
*/ |
if (precedence1 < precedence2) |
- return(1); |
+ return(1); |
else |
- return(-1); |
+ return(-1); |
} |
- } |
+ } |
/* |
* Special case: One of the helper-elements is contained by the other. |
* <foo> |
@@ -3157,7 +3157,7 @@ xmlXPathCmpNodesExt(xmlNodePtr node1, xmlNodePtr node2) { |
* </node2> |
* Text-6(precedence2 == 3) |
* </foo> |
- */ |
+ */ |
if ((precedence2 == 3) && (precedence1 > 1)) { |
cur = node1->parent; |
while (cur) { |
@@ -3166,7 +3166,7 @@ xmlXPathCmpNodesExt(xmlNodePtr node1, xmlNodePtr node2) { |
cur = cur->parent; |
} |
} |
- if ((precedence1 == 3) && (precedence2 > 1)) { |
+ if ((precedence1 == 3) && (precedence2 > 1)) { |
cur = node2->parent; |
while (cur) { |
if (cur == node1) |
@@ -3174,16 +3174,16 @@ xmlXPathCmpNodesExt(xmlNodePtr node1, xmlNodePtr node2) { |
cur = cur->parent; |
} |
} |
- } |
+ } |
/* |
* Speedup using document order if availble. |
*/ |
- if ((node1->type == XML_ELEMENT_NODE) && |
+ if ((node1->type == XML_ELEMENT_NODE) && |
(node2->type == XML_ELEMENT_NODE) && |
(0 > (long) node1->content) && |
(0 > (long) node2->content) && |
- (node1->doc == node2->doc)) { |
+ (node1->doc == node2->doc)) { |
l1 = -((long) node1->content); |
l2 = -((long) node2->content); |
@@ -3251,7 +3251,7 @@ turtle_comparison: |
(node2->type == XML_ELEMENT_NODE) && |
(0 > (long) node1->content) && |
(0 > (long) node2->content) && |
- (node1->doc == node2->doc)) { |
+ (node1->doc == node2->doc)) { |
l1 = -((long) node1->content); |
l2 = -((long) node2->content); |
@@ -3339,9 +3339,9 @@ xmlXPathNodeSetDupNs(xmlNodePtr node, xmlNsPtr ns) { |
memset(cur, 0, sizeof(xmlNs)); |
cur->type = XML_NAMESPACE_DECL; |
if (ns->href != NULL) |
- cur->href = xmlStrdup(ns->href); |
+ cur->href = xmlStrdup(ns->href); |
if (ns->prefix != NULL) |
- cur->prefix = xmlStrdup(ns->prefix); |
+ cur->prefix = xmlStrdup(ns->prefix); |
cur->next = (xmlNsPtr) node; |
return((xmlNodePtr) cur); |
} |
@@ -3435,7 +3435,7 @@ xmlXPathNodeSetCreateSize(int size) { |
return(NULL); |
} |
memset(ret->nodeTab, 0 , size * (size_t) sizeof(xmlNodePtr)); |
- ret->nodeMax = size; |
+ ret->nodeMax = size; |
return(ret); |
} |
@@ -3488,7 +3488,7 @@ void |
xmlXPathNodeSetAddNs(xmlNodeSetPtr cur, xmlNodePtr node, xmlNsPtr ns) { |
int i; |
- |
+ |
if ((cur == NULL) || (ns == NULL) || (node == NULL) || |
(ns->type != XML_NAMESPACE_DECL) || |
(node->type != XML_ELEMENT_NODE)) |
@@ -3587,7 +3587,7 @@ xmlXPathNodeSetAdd(xmlNodeSetPtr cur, xmlNodePtr val) { |
if (val->type == XML_NAMESPACE_DECL) { |
xmlNsPtr ns = (xmlNsPtr) val; |
- cur->nodeTab[cur->nodeNr++] = |
+ cur->nodeTab[cur->nodeNr++] = |
xmlXPathNodeSetDupNs((xmlNodePtr) ns->next, ns); |
} else |
cur->nodeTab[cur->nodeNr++] = val; |
@@ -3639,7 +3639,7 @@ xmlXPathNodeSetAddUnique(xmlNodeSetPtr cur, xmlNodePtr val) { |
if (val->type == XML_NAMESPACE_DECL) { |
xmlNsPtr ns = (xmlNsPtr) val; |
- cur->nodeTab[cur->nodeNr++] = |
+ cur->nodeTab[cur->nodeNr++] = |
xmlXPathNodeSetDupNs((xmlNodePtr) ns->next, ns); |
} else |
cur->nodeTab[cur->nodeNr++] = val; |
@@ -3674,7 +3674,7 @@ xmlXPathNodeSetMerge(xmlNodeSetPtr val1, xmlNodeSetPtr val2) { |
* If there was a flag on the nodesetval, indicating that |
* some temporary nodes are in, that would be helpfull. |
*/ |
- /* |
+ /* |
* Optimization: Create an equally sized node-set |
* and memcpy the content. |
*/ |
@@ -3698,7 +3698,7 @@ xmlXPathNodeSetMerge(xmlNodeSetPtr val1, xmlNodeSetPtr val2) { |
initNr = val1->nodeNr; |
for (i = 0;i < val2->nodeNr;i++) { |
- n2 = val2->nodeTab[i]; |
+ n2 = val2->nodeTab[i]; |
/* |
* check against duplicates |
*/ |
@@ -3709,7 +3709,7 @@ xmlXPathNodeSetMerge(xmlNodeSetPtr val1, xmlNodeSetPtr val2) { |
skip = 1; |
break; |
} else if ((n1->type == XML_NAMESPACE_DECL) && |
- (n2->type == XML_NAMESPACE_DECL)) { |
+ (n2->type == XML_NAMESPACE_DECL)) { |
if ((((xmlNsPtr) n1)->next == ((xmlNsPtr) n2)->next) && |
(xmlStrEqual(((xmlNsPtr) n1)->prefix, |
((xmlNsPtr) n2)->prefix))) |
@@ -3860,7 +3860,7 @@ xmlXPathNodeSetMergeAndClear(xmlNodeSetPtr set1, xmlNodeSetPtr set2, |
if (set1 == NULL) |
return (NULL); |
- initNbSet1 = set1->nodeNr; |
+ initNbSet1 = set1->nodeNr; |
for (i = 0;i < set2->nodeNr;i++) { |
n2 = set2->nodeTab[i]; |
/* |
@@ -3873,11 +3873,11 @@ xmlXPathNodeSetMergeAndClear(xmlNodeSetPtr set1, xmlNodeSetPtr set2, |
*/ |
for (j = 0; j < initNbSet1; j++) { |
n1 = set1->nodeTab[j]; |
- if (n1 == n2) { |
+ if (n1 == n2) { |
goto skip_node; |
} else if ((n1->type == XML_NAMESPACE_DECL) && |
(n2->type == XML_NAMESPACE_DECL)) |
- { |
+ { |
if ((((xmlNsPtr) n1)->next == ((xmlNsPtr) n2)->next) && |
(xmlStrEqual(((xmlNsPtr) n1)->prefix, |
((xmlNsPtr) n2)->prefix))) |
@@ -3906,7 +3906,7 @@ xmlXPathNodeSetMergeAndClear(xmlNodeSetPtr set1, xmlNodeSetPtr set2, |
set1->nodeMax = XML_NODESET_DEFAULT; |
} else if (set1->nodeNr >= set1->nodeMax) { |
xmlNodePtr *temp; |
- |
+ |
set1->nodeMax *= 2; |
temp = (xmlNodePtr *) xmlRealloc( |
set1->nodeTab, set1->nodeMax * sizeof(xmlNodePtr)); |
@@ -3918,7 +3918,7 @@ xmlXPathNodeSetMergeAndClear(xmlNodeSetPtr set1, xmlNodeSetPtr set2, |
} |
if (n2->type == XML_NAMESPACE_DECL) { |
xmlNsPtr ns = (xmlNsPtr) n2; |
- |
+ |
set1->nodeTab[set1->nodeNr++] = |
xmlXPathNodeSetDupNs((xmlNodePtr) ns->next, ns); |
} else |
@@ -3946,7 +3946,7 @@ skip_node: |
static xmlNodeSetPtr |
xmlXPathNodeSetMergeAndClearNoDupls(xmlNodeSetPtr set1, xmlNodeSetPtr set2, |
int hasNullEntries) |
-{ |
+{ |
if (set2 == NULL) |
return(set1); |
if ((set1 == NULL) && (hasNullEntries == 0)) { |
@@ -3970,14 +3970,14 @@ xmlXPathNodeSetMergeAndClearNoDupls(xmlNodeSetPtr set1, xmlNodeSetPtr set2, |
set1 = xmlXPathNodeSetCreate(NULL); |
if (set1 == NULL) |
return (NULL); |
- |
+ |
for (i = 0;i < set2->nodeNr;i++) { |
n2 = set2->nodeTab[i]; |
/* |
* Skip NULLed entries. |
*/ |
if (n2 == NULL) |
- continue; |
+ continue; |
if (set1->nodeMax == 0) { |
set1->nodeTab = (xmlNodePtr *) xmlMalloc( |
XML_NODESET_DEFAULT * sizeof(xmlNodePtr)); |
@@ -3990,7 +3990,7 @@ xmlXPathNodeSetMergeAndClearNoDupls(xmlNodeSetPtr set1, xmlNodeSetPtr set2, |
set1->nodeMax = XML_NODESET_DEFAULT; |
} else if (set1->nodeNr >= set1->nodeMax) { |
xmlNodePtr *temp; |
- |
+ |
set1->nodeMax *= 2; |
temp = (xmlNodePtr *) xmlRealloc( |
set1->nodeTab, set1->nodeMax * sizeof(xmlNodePtr)); |
@@ -4029,7 +4029,7 @@ xmlXPathNodeSetDel(xmlNodeSetPtr cur, xmlNodePtr val) { |
if (i >= cur->nodeNr) { /* not found */ |
#ifdef DEBUG |
- xmlGenericError(xmlGenericErrorContext, |
+ xmlGenericError(xmlGenericErrorContext, |
"xmlXPathNodeSetDel: Node %s wasn't found in NodeList\n", |
val->name); |
#endif |
@@ -4089,7 +4089,7 @@ xmlXPathFreeNodeSet(xmlNodeSetPtr obj) { |
/** |
* xmlXPathNodeSetClear: |
* @set: the node set to clear |
- * |
+ * |
* Clears the list from all temporary XPath objects (e.g. namespace nodes |
* are feed), but does *not* free the list itself. Sets the length of the |
* list to 0. |
@@ -4102,13 +4102,13 @@ xmlXPathNodeSetClear(xmlNodeSetPtr set, int hasNsNodes) |
else if (hasNsNodes) { |
int i; |
xmlNodePtr node; |
- |
+ |
for (i = 0; i < set->nodeNr; i++) { |
node = set->nodeTab[i]; |
if ((node != NULL) && |
(node->type == XML_NAMESPACE_DECL)) |
xmlXPathNodeSetFreeNs((xmlNsPtr) node); |
- } |
+ } |
} |
set->nodeNr = 0; |
} |
@@ -4117,7 +4117,7 @@ xmlXPathNodeSetClear(xmlNodeSetPtr set, int hasNsNodes) |
* xmlXPathNodeSetClearFromPos: |
* @set: the node set to be cleared |
* @pos: the start position to clear from |
- * |
+ * |
* Clears the list from temporary XPath objects (e.g. namespace nodes |
* are feed) starting with the entry at @pos, but does *not* free the list |
* itself. Sets the length of the list to @pos. |
@@ -4130,13 +4130,13 @@ xmlXPathNodeSetClearFromPos(xmlNodeSetPtr set, int pos, int hasNsNodes) |
else if ((hasNsNodes)) { |
int i; |
xmlNodePtr node; |
- |
+ |
for (i = pos; i < set->nodeNr; i++) { |
node = set->nodeTab[i]; |
if ((node != NULL) && |
(node->type == XML_NAMESPACE_DECL)) |
xmlXPathNodeSetFreeNs((xmlNsPtr) node); |
- } |
+ } |
} |
set->nodeNr = pos; |
} |
@@ -4413,7 +4413,7 @@ xmlXPathIntersection (xmlNodeSetPtr nodes1, xmlNodeSetPtr nodes2) { |
* |
* Implements the EXSLT - Sets distinct() function: |
* node-set set:distinct (node-set) |
- * |
+ * |
* Returns a subset of the nodes contained in @nodes, or @nodes if |
* it is empty |
*/ |
@@ -4722,7 +4722,7 @@ xmlXPathTrailing (xmlNodeSetPtr nodes1, xmlNodeSetPtr nodes2) { |
* |
* Returns 0 in case of success, -1 in case of error |
*/ |
-int |
+int |
xmlXPathRegisterFunc(xmlXPathContextPtr ctxt, const xmlChar *name, |
xmlXPathFunction f) { |
return(xmlXPathRegisterFuncNS(ctxt, name, NULL, f)); |
@@ -4816,7 +4816,7 @@ xmlXPathFunction |
xmlXPathFunctionLookupNS(xmlXPathContextPtr ctxt, const xmlChar *name, |
const xmlChar *ns_uri) { |
xmlXPathFunction ret; |
- |
+ |
if (ctxt == NULL) |
return(NULL); |
if (name == NULL) |
@@ -4870,7 +4870,7 @@ xmlXPathRegisteredFuncsCleanup(xmlXPathContextPtr ctxt) { |
* |
* Returns 0 in case of success, -1 in case of error |
*/ |
-int |
+int |
xmlXPathRegisterVariable(xmlXPathContextPtr ctxt, const xmlChar *name, |
xmlXPathObjectPtr value) { |
return(xmlXPathRegisterVariableNS(ctxt, name, NULL, value)); |
@@ -4902,7 +4902,7 @@ xmlXPathRegisterVariableNS(xmlXPathContextPtr ctxt, const xmlChar *name, |
if (ctxt->varHash == NULL) |
return(-1); |
if (value == NULL) |
- return(xmlHashRemoveEntry2(ctxt->varHash, name, ns_uri, |
+ return(xmlHashRemoveEntry2(ctxt->varHash, name, ns_uri, |
(xmlHashDeallocator)xmlXPathFreeObject)); |
return(xmlHashUpdateEntry2(ctxt->varHash, name, ns_uri, |
(void *) value, |
@@ -4958,7 +4958,7 @@ xmlXPathVariableLookup(xmlXPathContextPtr ctxt, const xmlChar *name) { |
* @ns_uri: the variable namespace URI |
* |
* Search in the Variable array of the context for the given |
- * variable value. |
+ * variable value. |
* |
* Returns the a copy of the value or NULL if not found |
*/ |
@@ -5003,7 +5003,7 @@ xmlXPathRegisteredVariablesCleanup(xmlXPathContextPtr ctxt) { |
/** |
* xmlXPathRegisterNs: |
* @ctxt: the XPath context |
- * @prefix: the namespace prefix |
+ * @prefix: the namespace prefix cannot be NULL or empty string |
* @ns_uri: the namespace name |
* |
* Register a new namespace. If @ns_uri is NULL it unregisters |
@@ -5018,6 +5018,8 @@ xmlXPathRegisterNs(xmlXPathContextPtr ctxt, const xmlChar *prefix, |
return(-1); |
if (prefix == NULL) |
return(-1); |
+ if (prefix[0] == 0) |
+ return(-1); |
if (ctxt->nsHash == NULL) |
ctxt->nsHash = xmlHashCreate(10); |
@@ -5341,7 +5343,7 @@ xmlXPathObjectCopy(xmlXPathObjectPtr val) { |
#endif |
case XPATH_USERS: |
ret->user = val->user; |
- break; |
+ break; |
case XPATH_UNDEFINED: |
xmlGenericError(xmlGenericErrorContext, |
"xmlXPathObjectCopy: unsupported type %d\n", |
@@ -5370,7 +5372,7 @@ xmlXPathFreeObject(xmlXPathObjectPtr obj) { |
#endif |
obj->type = XPATH_XSLT_TREE; /* TODO: Just for debugging. */ |
if (obj->nodesetval != NULL) |
- xmlXPathFreeValueTree(obj->nodesetval); |
+ xmlXPathFreeValueTree(obj->nodesetval); |
} else { |
if (obj->nodesetval != NULL) |
xmlXPathFreeNodeSet(obj->nodesetval); |
@@ -5387,7 +5389,7 @@ xmlXPathFreeObject(xmlXPathObjectPtr obj) { |
#ifdef XP_DEBUG_OBJ_USAGE |
xmlXPathDebugObjUsageReleased(NULL, obj->type); |
#endif |
- xmlFree(obj); |
+ xmlFree(obj); |
} |
/** |
@@ -5410,7 +5412,7 @@ xmlXPathReleaseObject(xmlXPathContextPtr ctxt, xmlXPathObjectPtr obj) |
return; |
if ((ctxt == NULL) || (ctxt->cache == NULL)) { |
xmlXPathFreeObject(obj); |
- } else { |
+ } else { |
xmlXPathContextCachePtr cache = |
(xmlXPathContextCachePtr) ctxt->cache; |
@@ -5419,7 +5421,7 @@ xmlXPathReleaseObject(xmlXPathContextPtr ctxt, xmlXPathObjectPtr obj) |
case XPATH_XSLT_TREE: |
if (obj->nodesetval != NULL) { |
if (obj->boolval) { |
- /* |
+ /* |
* It looks like the @boolval is used for |
* evaluation if this an XSLT Result Tree Fragment. |
* TODO: Check if this assumption is correct. |
@@ -5466,7 +5468,7 @@ xmlXPathReleaseObject(xmlXPathContextPtr ctxt, xmlXPathObjectPtr obj) |
xmlXPtrFreeLocationSet(obj->user); |
} |
goto free_obj; |
-#endif |
+#endif |
default: |
goto free_obj; |
} |
@@ -5487,7 +5489,7 @@ obj_cached: |
if (obj->nodesetval != NULL) { |
xmlNodeSetPtr tmpset = obj->nodesetval; |
- |
+ |
/* |
* TODO: Due to those nasty ns-nodes, we need to traverse |
* the list and free the ns-nodes. |
@@ -5510,7 +5512,7 @@ obj_cached: |
if ((tmpset->nodeTab[0] != NULL) && |
(tmpset->nodeTab[0]->type == XML_NAMESPACE_DECL)) |
xmlXPathNodeSetFreeNs((xmlNsPtr) tmpset->nodeTab[0]); |
- } |
+ } |
tmpset->nodeNr = 0; |
memset(obj, 0, sizeof(xmlXPathObject)); |
obj->nodesetval = tmpset; |
@@ -5522,7 +5524,7 @@ obj_cached: |
free_obj: |
/* |
* Cache is full; free the object. |
- */ |
+ */ |
if (obj->nodesetval != NULL) |
xmlXPathFreeNodeSet(obj->nodesetval); |
#ifdef XP_DEBUG_OBJ_USAGE |
@@ -5633,7 +5635,7 @@ xmlXPathCastNodeSetToString (xmlNodeSetPtr ns) { |
* Converts an existing object to its string() equivalent |
* |
* Returns the allocated string value of the object, NULL in case of error. |
- * It's up to the caller to free the string memory with xmlFree(). |
+ * It's up to the caller to free the string memory with xmlFree(). |
*/ |
xmlChar * |
xmlXPathCastToString(xmlXPathObjectPtr val) { |
@@ -6024,7 +6026,7 @@ xmlXPathNewContext(xmlDocPtr doc) { |
} |
#endif |
- xmlXPathRegisterAllFunctions(ret); |
+ xmlXPathRegisterAllFunctions(ret); |
return(ret); |
} |
@@ -6055,7 +6057,7 @@ xmlXPathFreeContext(xmlXPathContextPtr ctxt) { |
************************************************************************/ |
#define CHECK_CTXT(ctxt) \ |
- if (ctxt == NULL) { \ |
+ if (ctxt == NULL) { \ |
__xmlRaiseError(NULL, NULL, NULL, \ |
NULL, NULL, XML_FROM_XPATH, \ |
XML_ERR_INTERNAL_ERROR, XML_ERR_FATAL, \ |
@@ -6066,7 +6068,7 @@ xmlXPathFreeContext(xmlXPathContextPtr ctxt) { |
} \ |
#define CHECK_CTXT_NEG(ctxt) \ |
- if (ctxt == NULL) { \ |
+ if (ctxt == NULL) { \ |
__xmlRaiseError(NULL, NULL, NULL, \ |
NULL, NULL, XML_FROM_XPATH, \ |
XML_ERR_INTERNAL_ERROR, XML_ERR_FATAL, \ |
@@ -6079,7 +6081,7 @@ xmlXPathFreeContext(xmlXPathContextPtr ctxt) { |
#define CHECK_CONTEXT(ctxt) \ |
if ((ctxt == NULL) || (ctxt->doc == NULL) || \ |
- (ctxt->doc->children == NULL)) { \ |
+ (ctxt->doc->children == NULL)) { \ |
xmlXPatherror(ctxt, __FILE__, __LINE__, XPATH_INVALID_CTXT); \ |
return(NULL); \ |
} |
@@ -6142,7 +6144,7 @@ xmlXPathCompParserContext(xmlXPathCompExprPtr comp, xmlXPathContextPtr ctxt) { |
memset(ret, 0 , (size_t) sizeof(xmlXPathParserContext)); |
/* Allocate the value stack */ |
- ret->valueTab = (xmlXPathObjectPtr *) |
+ ret->valueTab = (xmlXPathObjectPtr *) |
xmlMalloc(10 * sizeof(xmlXPathObjectPtr)); |
if (ret->valueTab == NULL) { |
xmlFree(ret); |
@@ -6289,7 +6291,7 @@ xmlXPathNodeValHash(xmlNodePtr node) { |
tmp = tmp->next; |
continue; |
} |
- |
+ |
do { |
tmp = tmp->parent; |
if (tmp == NULL) |
@@ -6448,7 +6450,7 @@ xmlXPathCompareNodeSetString(xmlXPathParserContextPtr ctxt, int inf, int strict, |
* If both objects to be compared are node-sets, then the comparison |
* will be true if and only if there is a node in the first node-set |
* and a node in the second node-set such that the result of performing |
- * the comparison on the string-values of the two nodes is true. |
+ * the comparison on the string-values of the two nodes is true. |
* .... |
* When neither object to be compared is a node-set and the operator |
* is <=, <, >= or >, then the objects are compared by converting both |
@@ -6462,7 +6464,7 @@ xmlXPathCompareNodeSetString(xmlXPathParserContextPtr ctxt, int inf, int strict, |
* represented by the string; any other string is converted to NaN |
* |
* Conclusion all nodes need to be converted first to their string value |
- * and then the comparison must be done when possible |
+ * and then the comparison must be done when possible |
*/ |
static int |
xmlXPathCompareNodeSets(int inf, int strict, |
@@ -6517,7 +6519,7 @@ xmlXPathCompareNodeSets(int inf, int strict, |
} |
if (xmlXPathIsNaN(values2[j])) |
continue; |
- if (inf && strict) |
+ if (inf && strict) |
ret = (val1 < values2[j]); |
else if (inf && !strict) |
ret = (val1 <= values2[j]); |
@@ -6857,7 +6859,7 @@ xmlXPathEqualValuesCommon(xmlXPathParserContextPtr ctxt, |
case XPATH_STRING: |
if ((arg2->stringval == NULL) || |
(arg2->stringval[0] == 0)) ret = 0; |
- else |
+ else |
ret = 1; |
ret = (arg1->boolval == ret); |
break; |
@@ -6892,7 +6894,7 @@ xmlXPathEqualValuesCommon(xmlXPathParserContextPtr ctxt, |
case XPATH_NUMBER: |
/* Hand check NaN and Infinity equalities */ |
if (xmlXPathIsNaN(arg1->floatval) || |
- xmlXPathIsNaN(arg2->floatval)) { |
+ xmlXPathIsNaN(arg2->floatval)) { |
ret = 0; |
} else if (xmlXPathIsInf(arg1->floatval) == 1) { |
if (xmlXPathIsInf(arg2->floatval) == 1) |
@@ -6940,7 +6942,7 @@ xmlXPathEqualValuesCommon(xmlXPathParserContextPtr ctxt, |
case XPATH_BOOLEAN: |
if ((arg1->stringval == NULL) || |
(arg1->stringval[0] == 0)) ret = 0; |
- else |
+ else |
ret = 1; |
ret = (arg2->boolval == ret); |
break; |
@@ -6953,7 +6955,7 @@ xmlXPathEqualValuesCommon(xmlXPathParserContextPtr ctxt, |
arg1 = valuePop(ctxt); |
/* Hand check NaN and Infinity equalities */ |
if (xmlXPathIsNaN(arg1->floatval) || |
- xmlXPathIsNaN(arg2->floatval)) { |
+ xmlXPathIsNaN(arg2->floatval)) { |
ret = 0; |
} else if (xmlXPathIsInf(arg1->floatval) == 1) { |
if (xmlXPathIsInf(arg2->floatval) == 1) |
@@ -7019,7 +7021,7 @@ xmlXPathEqualValues(xmlXPathParserContextPtr ctxt) { |
int ret = 0; |
if ((ctxt == NULL) || (ctxt->context == NULL)) return(0); |
- arg2 = valuePop(ctxt); |
+ arg2 = valuePop(ctxt); |
arg1 = valuePop(ctxt); |
if ((arg1 == NULL) || (arg2 == NULL)) { |
if (arg1 != NULL) |
@@ -7065,7 +7067,7 @@ xmlXPathEqualValues(xmlXPathParserContextPtr ctxt) { |
case XPATH_BOOLEAN: |
if ((arg1->nodesetval == NULL) || |
(arg1->nodesetval->nodeNr == 0)) ret = 0; |
- else |
+ else |
ret = 1; |
ret = (ret == arg2->boolval); |
break; |
@@ -7104,7 +7106,7 @@ xmlXPathNotEqualValues(xmlXPathParserContextPtr ctxt) { |
int ret = 0; |
if ((ctxt == NULL) || (ctxt->context == NULL)) return(0); |
- arg2 = valuePop(ctxt); |
+ arg2 = valuePop(ctxt); |
arg1 = valuePop(ctxt); |
if ((arg1 == NULL) || (arg2 == NULL)) { |
if (arg1 != NULL) |
@@ -7150,7 +7152,7 @@ xmlXPathNotEqualValues(xmlXPathParserContextPtr ctxt) { |
case XPATH_BOOLEAN: |
if ((arg1->nodesetval == NULL) || |
(arg1->nodesetval->nodeNr == 0)) ret = 0; |
- else |
+ else |
ret = 1; |
ret = (ret != arg2->boolval); |
break; |
@@ -7181,7 +7183,7 @@ xmlXPathNotEqualValues(xmlXPathParserContextPtr ctxt) { |
* @inf: less than (1) or greater than (0) |
* @strict: is the comparison strict |
* |
- * Implement the compare operation on XPath objects: |
+ * Implement the compare operation on XPath objects: |
* @arg1 < @arg2 (1, 1, ... |
* @arg1 <= @arg2 (1, 0, ... |
* @arg1 > @arg2 (0, 1, ... |
@@ -7205,7 +7207,7 @@ xmlXPathCompareValues(xmlXPathParserContextPtr ctxt, int inf, int strict) { |
xmlXPathObjectPtr arg1, arg2; |
if ((ctxt == NULL) || (ctxt->context == NULL)) return(0); |
- arg2 = valuePop(ctxt); |
+ arg2 = valuePop(ctxt); |
arg1 = valuePop(ctxt); |
if ((arg1 == NULL) || (arg2 == NULL)) { |
if (arg1 != NULL) |
@@ -7446,7 +7448,7 @@ xmlXPathDivValues(xmlXPathParserContextPtr ctxt) { |
ctxt->value->floatval = xmlXPathPINF; |
else if (ctxt->value->floatval < 0) |
ctxt->value->floatval = xmlXPathNINF; |
- } else |
+ } else |
ctxt->value->floatval /= val; |
} |
@@ -7681,10 +7683,10 @@ xmlXPathNextDescendantOrSelfElemParent(xmlNodePtr cur, |
#ifdef LIBXML_DOCB_ENABLED |
case XML_DOCB_DOCUMENT_NODE: |
#endif |
- case XML_HTML_DOCUMENT_NODE: |
+ case XML_HTML_DOCUMENT_NODE: |
return(contextNode); |
default: |
- return(NULL); |
+ return(NULL); |
} |
return(NULL); |
} else { |
@@ -7695,7 +7697,7 @@ xmlXPathNextDescendantOrSelfElemParent(xmlNodePtr cur, |
case XML_ELEMENT_NODE: |
/* TODO: OK to have XInclude here? */ |
case XML_XINCLUDE_START: |
- case XML_DOCUMENT_FRAG_NODE: |
+ case XML_DOCUMENT_FRAG_NODE: |
if (cur != start) |
return(cur); |
if (cur->children != NULL) { |
@@ -7714,13 +7716,13 @@ xmlXPathNextDescendantOrSelfElemParent(xmlNodePtr cur, |
return(xmlDocGetRootElement((xmlDocPtr) cur)); |
default: |
break; |
- } |
- |
+ } |
+ |
next_sibling: |
if ((cur == NULL) || (cur == contextNode)) |
- return(NULL); |
+ return(NULL); |
if (cur->next != NULL) { |
- cur = cur->next; |
+ cur = cur->next; |
} else { |
cur = cur->parent; |
goto next_sibling; |
@@ -7728,7 +7730,7 @@ next_sibling: |
} |
} |
return(NULL); |
-} |
+} |
/** |
* xmlXPathNextDescendant: |
@@ -7760,7 +7762,7 @@ xmlXPathNextDescendant(xmlXPathParserContextPtr ctxt, xmlNodePtr cur) { |
/* |
* Do not descend on entities declarations |
*/ |
- if (cur->children->type != XML_ENTITY_DECL) { |
+ if (cur->children->type != XML_ENTITY_DECL) { |
cur = cur->children; |
/* |
* Skip DTDs |
@@ -7778,7 +7780,7 @@ xmlXPathNextDescendant(xmlXPathParserContextPtr ctxt, xmlNodePtr cur) { |
(cur->type != XML_DTD_NODE)) |
return(cur); |
} |
- |
+ |
do { |
cur = cur->parent; |
if (cur == NULL) break; |
@@ -7877,7 +7879,7 @@ xmlXPathNextParent(xmlXPathParserContextPtr ctxt, xmlNodePtr cur) { |
return(NULL); |
case XML_NAMESPACE_DECL: { |
xmlNsPtr ns = (xmlNsPtr) ctxt->context->node; |
- |
+ |
if ((ns->next != NULL) && |
(ns->next->type != XML_NAMESPACE_DECL)) |
return((xmlNodePtr) ns->next); |
@@ -7950,7 +7952,7 @@ xmlXPathNextAncestor(xmlXPathParserContextPtr ctxt, xmlNodePtr cur) { |
return(NULL); |
case XML_NAMESPACE_DECL: { |
xmlNsPtr ns = (xmlNsPtr) ctxt->context->node; |
- |
+ |
if ((ns->next != NULL) && |
(ns->next->type != XML_NAMESPACE_DECL)) |
return((xmlNodePtr) ns->next); |
@@ -7994,7 +7996,7 @@ xmlXPathNextAncestor(xmlXPathParserContextPtr ctxt, xmlNodePtr cur) { |
} |
case XML_NAMESPACE_DECL: { |
xmlNsPtr ns = (xmlNsPtr) ctxt->context->node; |
- |
+ |
if ((ns->next != NULL) && |
(ns->next->type != XML_NAMESPACE_DECL)) |
return((xmlNodePtr) ns->next); |
@@ -8191,7 +8193,7 @@ xmlXPathNextPreceding(xmlXPathParserContextPtr ctxt, xmlNodePtr cur) |
* node that are before the context node in document order, excluding any |
* ancestors and excluding attribute nodes and namespace nodes; the nodes are |
* ordered in reverse document order |
- * This is a faster implementation but internal only since it requires a |
+ * This is a faster implementation but internal only since it requires a |
* state kept in the parser context: ctxt->ancestor. |
* |
* Returns the next element following that axis |
@@ -8248,7 +8250,7 @@ xmlXPathNextNamespace(xmlXPathParserContextPtr ctxt, xmlNodePtr cur) { |
if (ctxt->context->tmpNsList == NULL && cur != (xmlNodePtr) xmlXPathXMLNamespace) { |
if (ctxt->context->tmpNsList != NULL) |
xmlFree(ctxt->context->tmpNsList); |
- ctxt->context->tmpNsList = |
+ ctxt->context->tmpNsList = |
xmlGetNsList(ctxt->context->doc, ctxt->context->node); |
ctxt->context->tmpNsNr = 0; |
if (ctxt->context->tmpNsList != NULL) { |
@@ -8396,7 +8398,7 @@ xmlXPathCountFunction(xmlXPathParserContextPtr ctxt, int nargs) { |
xmlXPathObjectPtr cur; |
CHECK_ARITY(1); |
- if ((ctxt->value == NULL) || |
+ if ((ctxt->value == NULL) || |
((ctxt->value->type != XPATH_NODESET) && |
(ctxt->value->type != XPATH_XSLT_TREE))) |
XP_ERROR(XPATH_INVALID_TYPE); |
@@ -8541,7 +8543,7 @@ xmlXPathIdFunction(xmlXPathParserContextPtr ctxt, int nargs) { |
} |
obj = xmlXPathCacheConvertString(ctxt->context, obj); |
ret = xmlXPathGetElementsByIds(ctxt->context->doc, obj->stringval); |
- valuePush(ctxt, xmlXPathCacheWrapNodeSet(ctxt->context, ret)); |
+ valuePush(ctxt, xmlXPathCacheWrapNodeSet(ctxt->context, ret)); |
xmlXPathReleaseObject(ctxt->context, obj); |
return; |
} |
@@ -8572,7 +8574,7 @@ xmlXPathLocalNameFunction(xmlXPathParserContextPtr ctxt, int nargs) { |
} |
CHECK_ARITY(1); |
- if ((ctxt->value == NULL) || |
+ if ((ctxt->value == NULL) || |
((ctxt->value->type != XPATH_NODESET) && |
(ctxt->value->type != XPATH_XSLT_TREE))) |
XP_ERROR(XPATH_INVALID_TYPE); |
@@ -8630,7 +8632,7 @@ xmlXPathNamespaceURIFunction(xmlXPathParserContextPtr ctxt, int nargs) { |
nargs = 1; |
} |
CHECK_ARITY(1); |
- if ((ctxt->value == NULL) || |
+ if ((ctxt->value == NULL) || |
((ctxt->value->type != XPATH_NODESET) && |
(ctxt->value->type != XPATH_XSLT_TREE))) |
XP_ERROR(XPATH_INVALID_TYPE); |
@@ -8714,7 +8716,7 @@ xmlXPathNameFunction(xmlXPathParserContextPtr ctxt, int nargs) |
cur->nodesetval->nodeTab[i]->name)); |
} else { |
xmlChar *fullname; |
- |
+ |
fullname = xmlBuildQName(cur->nodesetval->nodeTab[i]->name, |
cur->nodesetval->nodeTab[i]->ns->prefix, |
NULL, 0); |
@@ -8749,11 +8751,11 @@ xmlXPathNameFunction(xmlXPathParserContextPtr ctxt, int nargs) |
* the node in the node-set that is first in document order. |
* If the node-set is empty, an empty string is returned. |
* - A number is converted to a string as follows |
- * + NaN is converted to the string NaN |
- * + positive zero is converted to the string 0 |
- * + negative zero is converted to the string 0 |
- * + positive infinity is converted to the string Infinity |
- * + negative infinity is converted to the string -Infinity |
+ * + NaN is converted to the string NaN |
+ * + positive zero is converted to the string 0 |
+ * + negative zero is converted to the string 0 |
+ * + positive infinity is converted to the string Infinity |
+ * + negative infinity is converted to the string -Infinity |
* + if the number is an integer, the number is represented in |
* decimal form as a Number with no decimal point and no leading |
* zeros, preceded by a minus sign (-) if the number is negative |
@@ -8827,7 +8829,7 @@ xmlXPathStringLengthFunction(xmlXPathParserContextPtr ctxt, int nargs) { |
CHECK_TYPE(XPATH_STRING); |
cur = valuePop(ctxt); |
valuePush(ctxt, xmlXPathCacheNewFloat(ctxt->context, |
- xmlUTF8Strlen(cur->stringval))); |
+ xmlUTF8Strlen(cur->stringval))); |
xmlXPathReleaseObject(ctxt->context, cur); |
} |
@@ -8966,12 +8968,12 @@ xmlXPathStartsWithFunction(xmlXPathParserContextPtr ctxt, int nargs) { |
* or equal to the second argument and, if the third argument is specified, |
* less than the sum of the second and third arguments; the comparisons |
* and addition used for the above follow the standard IEEE 754 rules. Thus: |
- * - substring("12345", 1.5, 2.6) returns "234" |
- * - substring("12345", 0, 3) returns "12" |
- * - substring("12345", 0 div 0, 3) returns "" |
- * - substring("12345", 1, 0 div 0) returns "" |
- * - substring("12345", -42, 1 div 0) returns "12345" |
- * - substring("12345", -1 div 0, 1 div 0) returns "" |
+ * - substring("12345", 1.5, 2.6) returns "234" |
+ * - substring("12345", 0, 3) returns "12" |
+ * - substring("12345", 0 div 0, 3) returns "" |
+ * - substring("12345", 1, 0 div 0) returns "" |
+ * - substring("12345", -42, 1 div 0) returns "12345" |
+ * - substring("12345", -1 div 0, 1 div 0) returns "" |
*/ |
void |
xmlXPathSubstringFunction(xmlXPathParserContextPtr ctxt, int nargs) { |
@@ -9012,18 +9014,18 @@ xmlXPathSubstringFunction(xmlXPathParserContextPtr ctxt, int nargs) { |
*/ |
if (nargs != 3) { |
le = (double)m; |
- if (in < 1.0) |
+ if (in < 1.0) |
in = 1.0; |
} |
- /* Need to check for the special cases where either |
+ /* Need to check for the special cases where either |
* the index is NaN, the length is NaN, or both |
* arguments are infinity (relying on Inf + -Inf = NaN) |
*/ |
- if (!xmlXPathIsNaN(in + le) && !xmlXPathIsInf(in)) { |
+ if (!xmlXPathIsInf(in) && !xmlXPathIsNaN(in + le)) { |
/* |
* To meet the requirements of the spec, the arguments |
- * must be converted to integer format before |
+ * must be converted to integer format before |
* initial index calculations are done |
* |
* First we go to integer form, rounding up |
@@ -9089,13 +9091,13 @@ xmlXPathSubstringBeforeFunction(xmlXPathParserContextPtr ctxt, int nargs) { |
xmlBufferPtr target; |
const xmlChar *point; |
int offset; |
- |
+ |
CHECK_ARITY(2); |
CAST_TO_STRING; |
find = valuePop(ctxt); |
CAST_TO_STRING; |
str = valuePop(ctxt); |
- |
+ |
target = xmlBufferCreate(); |
if (target) { |
point = xmlStrstr(str->stringval, find->stringval); |
@@ -9132,13 +9134,13 @@ xmlXPathSubstringAfterFunction(xmlXPathParserContextPtr ctxt, int nargs) { |
xmlBufferPtr target; |
const xmlChar *point; |
int offset; |
- |
+ |
CHECK_ARITY(2); |
CAST_TO_STRING; |
find = valuePop(ctxt); |
CAST_TO_STRING; |
str = valuePop(ctxt); |
- |
+ |
target = xmlBufferCreate(); |
if (target) { |
point = xmlStrstr(str->stringval, find->stringval); |
@@ -9148,7 +9150,7 @@ xmlXPathSubstringAfterFunction(xmlXPathParserContextPtr ctxt, int nargs) { |
xmlStrlen(str->stringval) - offset); |
} |
valuePush(ctxt, xmlXPathCacheNewString(ctxt->context, |
- xmlBufferContent(target))); |
+ xmlBufferContent(target))); |
xmlBufferFree(target); |
} |
xmlXPathReleaseObject(ctxt->context, str); |
@@ -9175,7 +9177,7 @@ xmlXPathNormalizeFunction(xmlXPathParserContextPtr ctxt, int nargs) { |
xmlChar *source = NULL; |
xmlBufferPtr target; |
xmlChar blank; |
- |
+ |
if (ctxt == NULL) return; |
if (nargs == 0) { |
/* Use current context node */ |
@@ -9193,11 +9195,11 @@ xmlXPathNormalizeFunction(xmlXPathParserContextPtr ctxt, int nargs) { |
target = xmlBufferCreate(); |
if (target && source) { |
- |
+ |
/* Skip leading whitespaces */ |
while (IS_BLANK_CH(*source)) |
source++; |
- |
+ |
/* Collapse intermediate whitespaces, and skip trailing whitespaces */ |
blank = 0; |
while (*source) { |
@@ -9472,7 +9474,7 @@ xmlXPathSumFunction(xmlXPathParserContextPtr ctxt, int nargs) { |
double res = 0.0; |
CHECK_ARITY(1); |
- if ((ctxt->value == NULL) || |
+ if ((ctxt->value == NULL) || |
((ctxt->value->type != XPATH_NODESET) && |
(ctxt->value->type != XPATH_XSLT_TREE))) |
XP_ERROR(XPATH_INVALID_TYPE); |
@@ -9591,14 +9593,14 @@ xmlXPathRoundFunction(xmlXPathParserContextPtr ctxt, int nargs) { |
if (ctxt->value->floatval < 0) { |
if (ctxt->value->floatval < f - 0.5) |
ctxt->value->floatval = f - 1; |
- else |
+ else |
ctxt->value->floatval = f; |
if (ctxt->value->floatval == 0) |
ctxt->value->floatval = xmlXPathNZERO; |
} else { |
if (ctxt->value->floatval < f + 0.5) |
ctxt->value->floatval = f; |
- else |
+ else |
ctxt->value->floatval = f + 1; |
} |
} |
@@ -9649,7 +9651,7 @@ xmlXPathCurrentChar(xmlXPathParserContextPtr ctxt, int *len) { |
* UCS-4 range (hex.) UTF-8 octet sequence (binary) |
* 0000 0000-0000 007F 0xxxxxxx |
* 0000 0080-0000 07FF 110xxxxx 10xxxxxx |
- * 0000 0800-0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx |
+ * 0000 0800-0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx |
* |
* Check for the 0x110000 limit too |
*/ |
@@ -9686,7 +9688,7 @@ xmlXPathCurrentChar(xmlXPathParserContextPtr ctxt, int *len) { |
} |
if (!IS_CHAR(val)) { |
XP_ERROR0(XPATH_INVALID_CHAR_ERROR); |
- } |
+ } |
return(val); |
} else { |
/* 1-byte code */ |
@@ -9758,7 +9760,7 @@ xmlXPathParseNCName(xmlXPathParserContextPtr ctxt) { |
/** |
* xmlXPathParseQName: |
* @ctxt: the XPath Parser context |
- * @prefix: a xmlChar ** |
+ * @prefix: a xmlChar ** |
* |
* parse an XML qualified name |
* |
@@ -9778,7 +9780,7 @@ xmlXPathParseQName(xmlXPathParserContextPtr ctxt, xmlChar **prefix) { |
*prefix = NULL; |
ret = xmlXPathParseNCName(ctxt); |
- if (CUR == ':') { |
+ if (ret && CUR == ':') { |
*prefix = ret; |
NEXT; |
ret = xmlXPathParseNCName(ctxt); |
@@ -9852,7 +9854,7 @@ xmlXPathParseNameComplex(xmlXPathParserContextPtr ctxt, int qualified) { |
while ((c != ' ') && (c != '>') && (c != '/') && /* test bigname.xml */ |
((IS_LETTER(c)) || (IS_DIGIT(c)) || |
(c == '.') || (c == '-') || |
- (c == '_') || ((qualified) && (c == ':')) || |
+ (c == '_') || ((qualified) && (c == ':')) || |
(IS_COMBINING(c)) || |
(IS_EXTENDER(c)))) { |
COPY_BUF(l,buf,len,c); |
@@ -9865,7 +9867,7 @@ xmlXPathParseNameComplex(xmlXPathParserContextPtr ctxt, int qualified) { |
*/ |
xmlChar *buffer; |
int max = len * 2; |
- |
+ |
buffer = (xmlChar *) xmlMallocAtomic(max * sizeof(xmlChar)); |
if (buffer == NULL) { |
XP_ERRORNULL(XPATH_MEMORY_ERROR); |
@@ -9873,7 +9875,7 @@ xmlXPathParseNameComplex(xmlXPathParserContextPtr ctxt, int qualified) { |
memcpy(buffer, buf, len); |
while ((IS_LETTER(c)) || (IS_DIGIT(c)) || /* test bigname.xml */ |
(c == '.') || (c == '-') || |
- (c == '_') || ((qualified) && (c == ':')) || |
+ (c == '_') || ((qualified) && (c == ':')) || |
(IS_COMBINING(c)) || |
(IS_EXTENDER(c))) { |
if (len + 10 > max) { |
@@ -9920,7 +9922,7 @@ static double my_pow10[MAX_FRAC+1] = { |
* [30a] Float ::= Number ('e' Digits?)? |
* |
* [30] Number ::= Digits ('.' Digits?)? |
- * | '.' Digits |
+ * | '.' Digits |
* [31] Digits ::= [0-9]+ |
* |
* Compile a Number in the string |
@@ -10019,7 +10021,7 @@ xmlXPathStringEvalNumber(const xmlChar *str) { |
* @ctxt: the XPath Parser context |
* |
* [30] Number ::= Digits ('.' Digits?)? |
- * | '.' Digits |
+ * | '.' Digits |
* [31] Digits ::= [0-9]+ |
* |
* Compile a Number, then push it on the stack |
@@ -10199,9 +10201,9 @@ xmlXPathCompLiteral(xmlXPathParserContextPtr ctxt) { |
* |
* Early evaluation is possible since: |
* The variable bindings [...] used to evaluate a subexpression are |
- * always the same as those used to evaluate the containing expression. |
+ * always the same as those used to evaluate the containing expression. |
* |
- * [36] VariableReference ::= '$' QName |
+ * [36] VariableReference ::= '$' QName |
*/ |
static void |
xmlXPathCompVariableReference(xmlXPathParserContextPtr ctxt) { |
@@ -10260,7 +10262,7 @@ xmlXPathIsNodeType(const xmlChar *name) { |
* @ctxt: the XPath Parser context |
* |
* [16] FunctionCall ::= FunctionName '(' ( Argument ( ',' Argument)*)? ')' |
- * [17] Argument ::= Expr |
+ * [17] Argument ::= Expr |
* |
* Compile a function call, the evaluation of all arguments are |
* pushed on the stack |
@@ -10274,6 +10276,7 @@ xmlXPathCompFunctionCall(xmlXPathParserContextPtr ctxt) { |
name = xmlXPathParseQName(ctxt, &prefix); |
if (name == NULL) { |
+ xmlFree(prefix); |
XP_ERROR(XPATH_EXPR_ERROR); |
} |
SKIP_BLANKS; |
@@ -10306,7 +10309,11 @@ xmlXPathCompFunctionCall(xmlXPathParserContextPtr ctxt) { |
int op1 = ctxt->comp->last; |
ctxt->comp->last = -1; |
xmlXPathCompileExpr(ctxt, sort); |
- CHECK_ERROR; |
+ if (ctxt->error != XPATH_EXPRESSION_OK) { |
+ xmlFree(name); |
+ xmlFree(prefix); |
+ return; |
+ } |
PUSH_BINARY_EXPR(XPATH_OP_ARG, op1, ctxt->comp->last, 0, 0); |
nbargs++; |
if (CUR == ')') break; |
@@ -10327,11 +10334,11 @@ xmlXPathCompFunctionCall(xmlXPathParserContextPtr ctxt) { |
* xmlXPathCompPrimaryExpr: |
* @ctxt: the XPath Parser context |
* |
- * [15] PrimaryExpr ::= VariableReference |
+ * [15] PrimaryExpr ::= VariableReference |
* | '(' Expr ')' |
- * | Literal |
- * | Number |
- * | FunctionCall |
+ * | Literal |
+ * | Number |
+ * | FunctionCall |
* |
* Compile a primary expression. |
*/ |
@@ -10363,8 +10370,8 @@ xmlXPathCompPrimaryExpr(xmlXPathParserContextPtr ctxt) { |
* xmlXPathCompFilterExpr: |
* @ctxt: the XPath Parser context |
* |
- * [20] FilterExpr ::= PrimaryExpr |
- * | FilterExpr Predicate |
+ * [20] FilterExpr ::= PrimaryExpr |
+ * | FilterExpr Predicate |
* |
* Compile a filter expression. |
* Square brackets are used to filter expressions in the same way that |
@@ -10379,13 +10386,13 @@ xmlXPathCompFilterExpr(xmlXPathParserContextPtr ctxt) { |
xmlXPathCompPrimaryExpr(ctxt); |
CHECK_ERROR; |
SKIP_BLANKS; |
- |
+ |
while (CUR == '[') { |
xmlXPathCompPredicate(ctxt, 1); |
SKIP_BLANKS; |
} |
- |
+ |
} |
/** |
@@ -10424,7 +10431,7 @@ xmlXPathScanName(xmlXPathParserContextPtr ctxt) { |
while ((c != ' ') && (c != '>') && (c != '/') && /* test bigname.xml */ |
((IS_LETTER(c)) || (IS_DIGIT(c)) || |
(c == '.') || (c == '-') || |
- (c == '_') || (c == ':') || |
+ (c == '_') || (c == ':') || |
(IS_COMBINING(c)) || |
(IS_EXTENDER(c)))) { |
len += l; |
@@ -10440,10 +10447,10 @@ xmlXPathScanName(xmlXPathParserContextPtr ctxt) { |
* xmlXPathCompPathExpr: |
* @ctxt: the XPath Parser context |
* |
- * [19] PathExpr ::= LocationPath |
- * | FilterExpr |
- * | FilterExpr '/' RelativeLocationPath |
- * | FilterExpr '//' RelativeLocationPath |
+ * [19] PathExpr ::= LocationPath |
+ * | FilterExpr |
+ * | FilterExpr '/' RelativeLocationPath |
+ * | FilterExpr '//' RelativeLocationPath |
* |
* Compile a path expression. |
* The / operator and // operators combine an arbitrary expression |
@@ -10460,8 +10467,8 @@ xmlXPathCompPathExpr(xmlXPathParserContextPtr ctxt) { |
xmlChar *name = NULL; /* we may have to preparse a name to find out */ |
SKIP_BLANKS; |
- if ((CUR == '$') || (CUR == '(') || |
- (IS_ASCII_DIGIT(CUR)) || |
+ if ((CUR == '$') || (CUR == '(') || |
+ (IS_ASCII_DIGIT(CUR)) || |
(CUR == '\'') || (CUR == '"') || |
(CUR == '.' && IS_ASCII_DIGIT(NXT(1)))) { |
lc = 0; |
@@ -10501,7 +10508,7 @@ xmlXPathCompPathExpr(xmlXPathParserContextPtr ctxt) { |
} else if (name != NULL) { |
int len =xmlStrlen(name); |
- |
+ |
while (NXT(len) != 0) { |
if (NXT(len) == '/') { |
/* element name */ |
@@ -10568,7 +10575,7 @@ xmlXPathCompPathExpr(xmlXPathParserContextPtr ctxt) { |
/* make sure all cases are covered explicitly */ |
XP_ERROR(XPATH_EXPR_ERROR); |
} |
- } |
+ } |
if (lc) { |
if (CUR == '/') { |
@@ -10600,8 +10607,8 @@ xmlXPathCompPathExpr(xmlXPathParserContextPtr ctxt) { |
* xmlXPathCompUnionExpr: |
* @ctxt: the XPath Parser context |
* |
- * [18] UnionExpr ::= PathExpr |
- * | UnionExpr '|' PathExpr |
+ * [18] UnionExpr ::= PathExpr |
+ * | UnionExpr '|' PathExpr |
* |
* Compile an union expression. |
*/ |
@@ -10629,8 +10636,8 @@ xmlXPathCompUnionExpr(xmlXPathParserContextPtr ctxt) { |
* xmlXPathCompUnaryExpr: |
* @ctxt: the XPath Parser context |
* |
- * [27] UnaryExpr ::= UnionExpr |
- * | '-' UnaryExpr |
+ * [27] UnaryExpr ::= UnionExpr |
+ * | '-' UnaryExpr |
* |
* Compile an unary expression. |
*/ |
@@ -10662,10 +10669,10 @@ xmlXPathCompUnaryExpr(xmlXPathParserContextPtr ctxt) { |
* xmlXPathCompMultiplicativeExpr: |
* @ctxt: the XPath Parser context |
* |
- * [26] MultiplicativeExpr ::= UnaryExpr |
- * | MultiplicativeExpr MultiplyOperator UnaryExpr |
- * | MultiplicativeExpr 'div' UnaryExpr |
- * | MultiplicativeExpr 'mod' UnaryExpr |
+ * [26] MultiplicativeExpr ::= UnaryExpr |
+ * | MultiplicativeExpr MultiplyOperator UnaryExpr |
+ * | MultiplicativeExpr 'div' UnaryExpr |
+ * | MultiplicativeExpr 'mod' UnaryExpr |
* [34] MultiplyOperator ::= '*' |
* |
* Compile an Additive expression. |
@@ -10676,7 +10683,7 @@ xmlXPathCompMultiplicativeExpr(xmlXPathParserContextPtr ctxt) { |
xmlXPathCompUnaryExpr(ctxt); |
CHECK_ERROR; |
SKIP_BLANKS; |
- while ((CUR == '*') || |
+ while ((CUR == '*') || |
((CUR == 'd') && (NXT(1) == 'i') && (NXT(2) == 'v')) || |
((CUR == 'm') && (NXT(1) == 'o') && (NXT(2) == 'd'))) { |
int op = -1; |
@@ -10704,9 +10711,9 @@ xmlXPathCompMultiplicativeExpr(xmlXPathParserContextPtr ctxt) { |
* xmlXPathCompAdditiveExpr: |
* @ctxt: the XPath Parser context |
* |
- * [25] AdditiveExpr ::= MultiplicativeExpr |
- * | AdditiveExpr '+' MultiplicativeExpr |
- * | AdditiveExpr '-' MultiplicativeExpr |
+ * [25] AdditiveExpr ::= MultiplicativeExpr |
+ * | AdditiveExpr '+' MultiplicativeExpr |
+ * | AdditiveExpr '-' MultiplicativeExpr |
* |
* Compile an Additive expression. |
*/ |
@@ -10736,11 +10743,11 @@ xmlXPathCompAdditiveExpr(xmlXPathParserContextPtr ctxt) { |
* xmlXPathCompRelationalExpr: |
* @ctxt: the XPath Parser context |
* |
- * [24] RelationalExpr ::= AdditiveExpr |
- * | RelationalExpr '<' AdditiveExpr |
- * | RelationalExpr '>' AdditiveExpr |
- * | RelationalExpr '<=' AdditiveExpr |
- * | RelationalExpr '>=' AdditiveExpr |
+ * [24] RelationalExpr ::= AdditiveExpr |
+ * | RelationalExpr '<' AdditiveExpr |
+ * | RelationalExpr '>' AdditiveExpr |
+ * | RelationalExpr '<=' AdditiveExpr |
+ * | RelationalExpr '>=' AdditiveExpr |
* |
* A <= B > C is allowed ? Answer from James, yes with |
* (AdditiveExpr <= AdditiveExpr) > AdditiveExpr |
@@ -10780,9 +10787,9 @@ xmlXPathCompRelationalExpr(xmlXPathParserContextPtr ctxt) { |
* xmlXPathCompEqualityExpr: |
* @ctxt: the XPath Parser context |
* |
- * [23] EqualityExpr ::= RelationalExpr |
- * | EqualityExpr '=' RelationalExpr |
- * | EqualityExpr '!=' RelationalExpr |
+ * [23] EqualityExpr ::= RelationalExpr |
+ * | EqualityExpr '=' RelationalExpr |
+ * | EqualityExpr '!=' RelationalExpr |
* |
* A != B != C is allowed ? Answer from James, yes with |
* (RelationalExpr = RelationalExpr) = RelationalExpr |
@@ -10817,8 +10824,8 @@ xmlXPathCompEqualityExpr(xmlXPathParserContextPtr ctxt) { |
* xmlXPathCompAndExpr: |
* @ctxt: the XPath Parser context |
* |
- * [22] AndExpr ::= EqualityExpr |
- * | AndExpr 'and' EqualityExpr |
+ * [22] AndExpr ::= EqualityExpr |
+ * | AndExpr 'and' EqualityExpr |
* |
* Compile an AND expression. |
* |
@@ -10843,9 +10850,9 @@ xmlXPathCompAndExpr(xmlXPathParserContextPtr ctxt) { |
* xmlXPathCompileExpr: |
* @ctxt: the XPath Parser context |
* |
- * [14] Expr ::= OrExpr |
- * [21] OrExpr ::= AndExpr |
- * | OrExpr 'or' AndExpr |
+ * [14] Expr ::= OrExpr |
+ * [21] OrExpr ::= AndExpr |
+ * | OrExpr 'or' AndExpr |
* |
* Parse and compile an expression |
*/ |
@@ -10861,7 +10868,6 @@ xmlXPathCompileExpr(xmlXPathParserContextPtr ctxt, int sort) { |
xmlXPathCompAndExpr(ctxt); |
CHECK_ERROR; |
PUSH_BINARY_EXPR(XPATH_OP_OR, op1, ctxt->comp->last, 0, 0); |
- op1 = ctxt->comp->nbStep; |
SKIP_BLANKS; |
} |
if ((sort) && (ctxt->comp->steps[ctxt->comp->last].op != XPATH_OP_VALUE)) { |
@@ -10881,7 +10887,7 @@ xmlXPathCompileExpr(xmlXPathParserContextPtr ctxt, int sort) { |
* @filter: act as a filter |
* |
* [8] Predicate ::= '[' PredicateExpr ']' |
- * [9] PredicateExpr ::= Expr |
+ * [9] PredicateExpr ::= Expr |
* |
* Compile a predicate expression |
*/ |
@@ -10998,7 +11004,7 @@ xmlXPathCompNodeTest(xmlXPathParserContextPtr ctxt, xmlXPathTestVal *test, |
} |
*test = NODE_TEST_TYPE; |
- |
+ |
SKIP_BLANKS; |
if (*type == NODE_TYPE_PI) { |
/* |
@@ -11134,7 +11140,7 @@ xmlXPathIsAxisName(const xmlChar *name) { |
* @ctxt: the XPath Parser context |
* |
* [4] Step ::= AxisSpecifier NodeTest Predicate* |
- * | AbbreviatedStep |
+ * | AbbreviatedStep |
* |
* [12] AbbreviatedStep ::= '.' | '..' |
* |
@@ -11306,10 +11312,10 @@ eval_predicates: |
* xmlXPathCompRelativeLocationPath: |
* @ctxt: the XPath Parser context |
* |
- * [3] RelativeLocationPath ::= Step |
- * | RelativeLocationPath '/' Step |
- * | AbbreviatedRelativeLocationPath |
- * [11] AbbreviatedRelativeLocationPath ::= RelativeLocationPath '//' Step |
+ * [3] RelativeLocationPath ::= Step |
+ * | RelativeLocationPath '/' Step |
+ * | AbbreviatedRelativeLocationPath |
+ * [11] AbbreviatedRelativeLocationPath ::= RelativeLocationPath '//' Step |
* |
* Compile a relative location path. |
*/ |
@@ -11327,6 +11333,7 @@ xmlXPathCompRelativeLocationPath |
SKIP_BLANKS; |
} |
xmlXPathCompStep(ctxt); |
+ CHECK_ERROR; |
SKIP_BLANKS; |
while (CUR == '/') { |
if ((CUR == '/') && (NXT(1) == '/')) { |
@@ -11348,12 +11355,12 @@ xmlXPathCompRelativeLocationPath |
* xmlXPathCompLocationPath: |
* @ctxt: the XPath Parser context |
* |
- * [1] LocationPath ::= RelativeLocationPath |
- * | AbsoluteLocationPath |
+ * [1] LocationPath ::= RelativeLocationPath |
+ * | AbsoluteLocationPath |
* [2] AbsoluteLocationPath ::= '/' RelativeLocationPath? |
- * | AbbreviatedAbsoluteLocationPath |
- * [10] AbbreviatedAbsoluteLocationPath ::= |
- * '//' RelativeLocationPath |
+ * | AbbreviatedAbsoluteLocationPath |
+ * [10] AbbreviatedAbsoluteLocationPath ::= |
+ * '//' RelativeLocationPath |
* |
* Compile a location path |
* |
@@ -11386,13 +11393,14 @@ xmlXPathCompLocationPath(xmlXPathParserContextPtr ctxt) { |
(CUR == '@') || (CUR == '*'))) |
xmlXPathCompRelativeLocationPath(ctxt); |
} |
+ CHECK_ERROR; |
} |
} |
} |
/************************************************************************ |
* * |
- * XPath precompiled expression evaluation * |
+ * XPath precompiled expression evaluation * |
* * |
************************************************************************/ |
@@ -11401,12 +11409,11 @@ xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op); |
#ifdef DEBUG_STEP |
static void |
-xmlXPathDebugDumpStepAxis(xmlXPathAxisVal axis, |
- xmlXPathTestVal test, |
+xmlXPathDebugDumpStepAxis(xmlXPathStepOpPtr op, |
int nbNodes) |
{ |
xmlGenericError(xmlGenericErrorContext, "new step : "); |
- switch (axis) { |
+ switch (op->value) { |
case AXIS_ANCESTOR: |
xmlGenericError(xmlGenericErrorContext, "axis 'ancestors' "); |
break; |
@@ -11453,14 +11460,14 @@ xmlXPathDebugDumpStepAxis(xmlXPathAxisVal axis, |
} |
xmlGenericError(xmlGenericErrorContext, |
" context contains %d nodes\n", nbNodes); |
- switch (test) { |
+ switch (op->value2) { |
case NODE_TEST_NONE: |
xmlGenericError(xmlGenericErrorContext, |
" searching for none !!!\n"); |
break; |
case NODE_TEST_TYPE: |
xmlGenericError(xmlGenericErrorContext, |
- " searching for type %d\n", type); |
+ " searching for type %d\n", op->value3); |
break; |
case NODE_TEST_PI: |
xmlGenericError(xmlGenericErrorContext, |
@@ -11473,14 +11480,14 @@ xmlXPathDebugDumpStepAxis(xmlXPathAxisVal axis, |
case NODE_TEST_NS: |
xmlGenericError(xmlGenericErrorContext, |
" searching for namespace %s\n", |
- prefix); |
+ op->value5); |
break; |
case NODE_TEST_NAME: |
xmlGenericError(xmlGenericErrorContext, |
- " searching for name %s\n", name); |
- if (prefix != NULL) |
+ " searching for name %s\n", op->value5); |
+ if (op->value4) |
xmlGenericError(xmlGenericErrorContext, |
- " with namespace %s\n", prefix); |
+ " with namespace %s\n", op->value4); |
break; |
} |
xmlGenericError(xmlGenericErrorContext, "Testing : "); |
@@ -11509,7 +11516,7 @@ xmlXPathCompOpEvalPredicate(xmlXPathParserContextPtr ctxt, |
CHECK_ERROR0; |
if (contextSize <= 0) |
return(0); |
- } |
+ } |
if (op->ch2 != -1) { |
xmlXPathContextPtr xpctxt = ctxt->context; |
xmlNodePtr contextNode, oldContextNode; |
@@ -11553,7 +11560,7 @@ xmlXPathCompOpEvalPredicate(xmlXPathParserContextPtr ctxt, |
/* |
* Get the expression of this predicate. |
*/ |
- exprOp = &ctxt->comp->steps[op->ch2]; |
+ exprOp = &ctxt->comp->steps[op->ch2]; |
newContextSize = 0; |
for (i = 0; i < set->nodeNr; i++) { |
if (set->nodeTab[i] == NULL) |
@@ -11563,8 +11570,8 @@ xmlXPathCompOpEvalPredicate(xmlXPathParserContextPtr ctxt, |
xpctxt->node = contextNode; |
xpctxt->contextSize = contextSize; |
xpctxt->proximityPosition = ++contextPos; |
- |
- /* |
+ |
+ /* |
* Also set the xpath document in case things like |
* key() are evaluated in the predicate. |
*/ |
@@ -11623,7 +11630,7 @@ xmlXPathCompOpEvalPredicate(xmlXPathParserContextPtr ctxt, |
if (ctxt->value == contextObj) |
valuePop(ctxt); |
xmlXPathReleaseObject(xpctxt, contextObj); |
- } |
+ } |
evaluation_exit: |
if (exprRes != NULL) |
xmlXPathReleaseObject(ctxt->context, exprRes); |
@@ -11707,7 +11714,7 @@ xmlXPathCompOpEvalPositionalPredicate(xmlXPathParserContextPtr ctxt, |
xpctxt->node = contextNode; |
xpctxt->contextSize = contextSize; |
xpctxt->proximityPosition = ++contextPos; |
- |
+ |
/* |
* Initialize the new set. |
* Also set the xpath document in case things like |
@@ -11729,7 +11736,7 @@ xmlXPathCompOpEvalPositionalPredicate(xmlXPathParserContextPtr ctxt, |
valuePush(ctxt, contextObj); |
res = xmlXPathCompOpEvalToBoolean(ctxt, exprOp, 1); |
- |
+ |
if ((ctxt->error != XPATH_EXPRESSION_OK) || (res == -1)) { |
xmlXPathObjectPtr tmp; |
/* pop the result */ |
@@ -11761,9 +11768,9 @@ xmlXPathCompOpEvalPositionalPredicate(xmlXPathParserContextPtr ctxt, |
} |
xmlXPathNodeSetClear(set, hasNsNodes); |
set->nodeNr = 1; |
- set->nodeTab[0] = contextNode; |
+ set->nodeTab[0] = contextNode; |
goto evaluation_exit; |
- } |
+ } |
if (pos == maxPos) { |
/* |
* We are done. |
@@ -11827,7 +11834,7 @@ evaluation_exit: |
static int |
xmlXPathIsPositionalPredicate(xmlXPathParserContextPtr ctxt, |
- xmlXPathStepOpPtr op, |
+ xmlXPathStepOpPtr op, |
int *maxPos) |
{ |
@@ -11836,7 +11843,7 @@ xmlXPathIsPositionalPredicate(xmlXPathParserContextPtr ctxt, |
/* |
* BIG NOTE: This is not intended for XPATH_OP_FILTER yet! |
*/ |
- |
+ |
/* |
* If not -1, then ch1 will point to: |
* 1) For predicates (XPATH_OP_PREDICATE): |
@@ -11845,13 +11852,13 @@ xmlXPathIsPositionalPredicate(xmlXPathParserContextPtr ctxt, |
* - an inner filter operater OR |
* - an expression selecting the node set. |
* E.g. "key('a', 'b')" or "(//foo | //bar)". |
- */ |
+ */ |
if ((op->op != XPATH_OP_PREDICATE) && (op->op != XPATH_OP_FILTER)) |
return(0); |
if (op->ch2 != -1) { |
exprOp = &ctxt->comp->steps[op->ch2]; |
- } else |
+ } else |
return(0); |
if ((exprOp != NULL) && |
@@ -11870,10 +11877,10 @@ xmlXPathIsPositionalPredicate(xmlXPathParserContextPtr ctxt, |
* Maybe we could rewrite the AST to ease the optimization. |
*/ |
*maxPos = (int) ((xmlXPathObjectPtr) exprOp->value4)->floatval; |
- |
+ |
if (((xmlXPathObjectPtr) exprOp->value4)->floatval == |
(float) *maxPos) |
- { |
+ { |
return(1); |
} |
} |
@@ -11934,7 +11941,7 @@ xmlXPathNodeCollectAndTest(xmlXPathParserContextPtr ctxt, |
* Used to feed predicate evaluation. |
*/ |
xmlNodeSetPtr seq; |
- xmlNodePtr cur; |
+ xmlNodePtr cur; |
/* First predicate operator */ |
xmlXPathStepOpPtr predOp; |
int maxPos; /* The requested position() (when a "[n]" predicate) */ |
@@ -11946,7 +11953,7 @@ xmlXPathNodeCollectAndTest(xmlXPathParserContextPtr ctxt, |
xmlXPathTraversalFunctionExt outerNext = NULL; |
void (*addNode) (xmlNodeSetPtr, xmlNodePtr); |
xmlXPathNodeSetMergeFunction mergeAndClear; |
- xmlNodePtr oldContextNode; |
+ xmlNodePtr oldContextNode; |
xmlXPathContextPtr xpctxt = ctxt->context; |
@@ -11961,7 +11968,7 @@ xmlXPathNodeCollectAndTest(xmlXPathParserContextPtr ctxt, |
xmlXPathReleaseObject(xpctxt, obj); |
XP_ERROR0(XPATH_UNDEF_PREFIX_ERROR); |
} |
- } |
+ } |
/* |
* Setup axis. |
* |
@@ -11975,7 +11982,6 @@ xmlXPathNodeCollectAndTest(xmlXPathParserContextPtr ctxt, |
* avoid a duplicate-aware merge, if the axis to be traversed is e.g. |
* the descendant-or-self axis. |
*/ |
- addNode = xmlXPathNodeSetAdd; |
mergeAndClear = xmlXPathNodeSetMergeAndClear; |
switch (axis) { |
case AXIS_ANCESTOR: |
@@ -11999,8 +12005,8 @@ xmlXPathNodeCollectAndTest(xmlXPathParserContextPtr ctxt, |
* This iterator will give us only nodes which can |
* hold element nodes. |
*/ |
- outerNext = xmlXPathNextDescendantOrSelfElemParent; |
- } |
+ outerNext = xmlXPathNextDescendantOrSelfElemParent; |
+ } |
if (((test == NODE_TEST_NAME) || (test == NODE_TEST_ALL)) && |
(type == NODE_TYPE_NODE)) |
{ |
@@ -12055,20 +12061,20 @@ xmlXPathNodeCollectAndTest(xmlXPathParserContextPtr ctxt, |
} |
#ifdef DEBUG_STEP |
- xmlXPathDebugDumpStepAxis(axis, test, |
- (obj->nodesetval != NULL) ? obj->nodsetval->nodeNr : 0); |
+ xmlXPathDebugDumpStepAxis(op, |
+ (obj->nodesetval != NULL) ? obj->nodesetval->nodeNr : 0); |
#endif |
if (next == NULL) { |
- xmlXPathReleaseObject(xpctxt, obj); |
+ xmlXPathReleaseObject(xpctxt, obj); |
return(0); |
- } |
+ } |
contextSeq = obj->nodesetval; |
if ((contextSeq == NULL) || (contextSeq->nodeNr <= 0)) { |
xmlXPathReleaseObject(xpctxt, obj); |
valuePush(ctxt, xmlXPathCacheWrapNodeSet(xpctxt, NULL)); |
return(0); |
- } |
+ } |
/* |
* Predicate optimization --------------------------------------------- |
* If this step has a last predicate, which contains a position(), |
@@ -12076,7 +12082,7 @@ xmlXPathNodeCollectAndTest(xmlXPathParserContextPtr ctxt, |
* the short-hand form, i.e., "[n]". |
* |
* Example - expression "/foo[parent::bar][1]": |
- * |
+ * |
* COLLECT 'child' 'name' 'node' foo -- op (we are here) |
* ROOT -- op->ch1 |
* PREDICATE -- op->ch2 (predOp) |
@@ -12109,7 +12115,7 @@ xmlXPathNodeCollectAndTest(xmlXPathParserContextPtr ctxt, |
*/ |
predOp = NULL; |
hasAxisRange = 1; |
- } |
+ } |
} |
} |
breakOnFirstHit = ((toBool) && (predOp == NULL)) ? 1 : 0; |
@@ -12118,7 +12124,7 @@ xmlXPathNodeCollectAndTest(xmlXPathParserContextPtr ctxt, |
*/ |
/* |
* 2.3 Node Tests |
- * - For the attribute axis, the principal node type is attribute. |
+ * - For the attribute axis, the principal node type is attribute. |
* - For the namespace axis, the principal node type is namespace. |
* - For other axes, the principal node type is element. |
* |
@@ -12155,8 +12161,8 @@ xmlXPathNodeCollectAndTest(xmlXPathParserContextPtr ctxt, |
*/ |
xpctxt->node = contextNode; |
} else |
- xpctxt->node = contextSeq->nodeTab[contextIdx++]; |
- |
+ xpctxt->node = contextSeq->nodeTab[contextIdx++]; |
+ |
if (seq == NULL) { |
seq = xmlXPathNodeSetCreate(NULL); |
if (seq == NULL) { |
@@ -12210,7 +12216,7 @@ xmlXPathNodeCollectAndTest(xmlXPathParserContextPtr ctxt, |
#ifdef DEBUG_STEP |
xmlGenericError(xmlGenericErrorContext, " %s", cur->name); |
#endif |
- |
+ |
switch (test) { |
case NODE_TEST_NONE: |
total = 0; |
@@ -12229,7 +12235,7 @@ xmlXPathNodeCollectAndTest(xmlXPathParserContextPtr ctxt, |
#ifdef LIBXML_DOCB_ENABLED |
case XML_DOCB_DOCUMENT_NODE: |
#endif |
- case XML_ELEMENT_NODE: |
+ case XML_ELEMENT_NODE: |
case XML_ATTRIBUTE_NODE: |
case XML_PI_NODE: |
case XML_COMMENT_NODE: |
@@ -12357,7 +12363,7 @@ xmlXPathNodeCollectAndTest(xmlXPathParserContextPtr ctxt, |
goto apply_predicates; |
-axis_range_end: /* ----------------------------------------------------- */ |
+axis_range_end: /* ----------------------------------------------------- */ |
/* |
* We have a "/foo[n]", and position() = n was reached. |
* Note that we can have as well "/foo/::parent::foo[1]", so |
@@ -12396,11 +12402,11 @@ first_hit: /* ---------------------------------------------------------- */ |
apply_predicates: /* --------------------------------------------------- */ |
/* |
* Apply predicates. |
- */ |
+ */ |
if ((predOp != NULL) && (seq->nodeNr > 0)) { |
/* |
* E.g. when we have a "/foo[some expression][n]". |
- */ |
+ */ |
/* |
* QUESTION TODO: The old predicate evaluation took into |
* account location-sets. |
@@ -12409,7 +12415,7 @@ apply_predicates: /* --------------------------------------------------- */ |
* All what I learned now from the evaluation semantics |
* does not indicate that a location-set will be processed |
* here, so this looks OK. |
- */ |
+ */ |
/* |
* Iterate over all predicates, starting with the outermost |
* predicate. |
@@ -12425,7 +12431,7 @@ apply_predicates: /* --------------------------------------------------- */ |
* |
* For the moment, I'll try to solve this with a recursive |
* function: xmlXPathCompOpEvalPredicate(). |
- */ |
+ */ |
size = seq->nodeNr; |
if (hasPredicateRange != 0) |
newSize = xmlXPathCompOpEvalPositionalPredicate(ctxt, |
@@ -12480,7 +12486,7 @@ apply_predicates: /* --------------------------------------------------- */ |
} else { |
outSeq = mergeAndClear(outSeq, seq, 0); |
} |
- } |
+ } |
} |
error: |
@@ -12509,7 +12515,7 @@ error: |
} |
if ((seq != NULL) && (seq != outSeq)) { |
xmlXPathFreeNodeSet(seq); |
- } |
+ } |
/* |
* Hand over the result. Better to push the set also in |
* case of errors. |
@@ -12793,9 +12799,9 @@ xmlXPathCompOpEvalFilterFirst(xmlXPathParserContextPtr ctxt, |
xmlXPathStepOpPtr op, xmlNodePtr * first) |
{ |
int total = 0; |
- xmlXPathCompExprPtr comp; |
+ xmlXPathCompExprPtr comp; |
xmlXPathObjectPtr res; |
- xmlXPathObjectPtr obj; |
+ xmlXPathObjectPtr obj; |
xmlNodeSetPtr oldset; |
xmlNodePtr oldnode; |
xmlDocPtr oldDoc; |
@@ -12810,7 +12816,7 @@ xmlXPathCompOpEvalFilterFirst(xmlXPathParserContextPtr ctxt, |
(comp->steps[op->ch1].op == XPATH_OP_SORT) && |
(comp->steps[op->ch2].op == XPATH_OP_SORT)) { |
int f = comp->steps[op->ch2].ch1; |
- |
+ |
if ((f != -1) && |
(comp->steps[f].op == XPATH_OP_FUNCTION) && |
(comp->steps[f].value5 == NULL) && |
@@ -12819,7 +12825,7 @@ xmlXPathCompOpEvalFilterFirst(xmlXPathParserContextPtr ctxt, |
(xmlStrEqual |
(comp->steps[f].value4, BAD_CAST "last"))) { |
xmlNodePtr last = NULL; |
- |
+ |
total += |
xmlXPathCompOpEvalLast(ctxt, |
&comp->steps[op->ch1], |
@@ -12846,7 +12852,7 @@ xmlXPathCompOpEvalFilterFirst(xmlXPathParserContextPtr ctxt, |
return (total); |
} |
} |
- |
+ |
if (op->ch1 != -1) |
total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]); |
CHECK_ERROR0; |
@@ -12854,7 +12860,7 @@ xmlXPathCompOpEvalFilterFirst(xmlXPathParserContextPtr ctxt, |
return (total); |
if (ctxt->value == NULL) |
return (total); |
- |
+ |
#ifdef LIBXML_XPTR_ENABLED |
oldnode = ctxt->context->node; |
/* |
@@ -12864,7 +12870,7 @@ xmlXPathCompOpEvalFilterFirst(xmlXPathParserContextPtr ctxt, |
xmlXPathObjectPtr tmp = NULL; |
xmlLocationSetPtr newlocset = NULL; |
xmlLocationSetPtr oldlocset; |
- |
+ |
/* |
* Extract the old locset, and then evaluate the result of the |
* expression for all the element in the locset. use it to grow |
@@ -12874,7 +12880,7 @@ xmlXPathCompOpEvalFilterFirst(xmlXPathParserContextPtr ctxt, |
obj = valuePop(ctxt); |
oldlocset = obj->user; |
ctxt->context->node = NULL; |
- |
+ |
if ((oldlocset == NULL) || (oldlocset->locNr == 0)) { |
ctxt->context->contextSize = 0; |
ctxt->context->proximityPosition = 0; |
@@ -12889,7 +12895,7 @@ xmlXPathCompOpEvalFilterFirst(xmlXPathParserContextPtr ctxt, |
return (total); |
} |
newlocset = xmlXPtrLocationSetCreate(NULL); |
- |
+ |
for (i = 0; i < oldlocset->locNr; i++) { |
/* |
* Run the evaluation with a node list made of a |
@@ -12904,7 +12910,7 @@ xmlXPathCompOpEvalFilterFirst(xmlXPathParserContextPtr ctxt, |
} else { |
xmlXPathNodeSetAddUnique(tmp->nodesetval, |
ctxt->context->node); |
- } |
+ } |
valuePush(ctxt, tmp); |
if (op->ch2 != -1) |
total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch2]); |
@@ -12930,14 +12936,14 @@ xmlXPathCompOpEvalFilterFirst(xmlXPathParserContextPtr ctxt, |
} |
if (ctxt->value == tmp) { |
valuePop(ctxt); |
- xmlXPathNodeSetClear(tmp->nodesetval, 1); |
+ xmlXPathNodeSetClear(tmp->nodesetval, 1); |
/* |
* REVISIT TODO: Don't create a temporary nodeset |
* for everly iteration. |
*/ |
/* OLD: xmlXPathFreeObject(res); */ |
} else |
- tmp = NULL; |
+ tmp = NULL; |
ctxt->context->node = NULL; |
/* |
* Only put the first node in the result, then leave. |
@@ -12962,7 +12968,7 @@ xmlXPathCompOpEvalFilterFirst(xmlXPathParserContextPtr ctxt, |
return (total); |
} |
#endif /* LIBXML_XPTR_ENABLED */ |
- |
+ |
/* |
* Extract the old set, and then evaluate the result of the |
* expression for all the element in the set. use it to grow |
@@ -12971,11 +12977,11 @@ xmlXPathCompOpEvalFilterFirst(xmlXPathParserContextPtr ctxt, |
CHECK_TYPE0(XPATH_NODESET); |
obj = valuePop(ctxt); |
oldset = obj->nodesetval; |
- |
+ |
oldnode = ctxt->context->node; |
oldDoc = ctxt->context->doc; |
ctxt->context->node = NULL; |
- |
+ |
if ((oldset == NULL) || (oldset->nodeNr == 0)) { |
ctxt->context->contextSize = 0; |
ctxt->context->proximityPosition = 0; |
@@ -12999,10 +13005,10 @@ xmlXPathCompOpEvalFilterFirst(xmlXPathParserContextPtr ctxt, |
* Initialize the new set. |
* Also set the xpath document in case things like |
* key() evaluation are attempted on the predicate |
- */ |
+ */ |
newset = xmlXPathNodeSetCreate(NULL); |
/* XXX what if xmlXPathNodeSetCreate returned NULL? */ |
- |
+ |
for (i = 0; i < oldset->nodeNr; i++) { |
/* |
* Run the evaluation with a node list made of |
@@ -13028,7 +13034,7 @@ xmlXPathCompOpEvalFilterFirst(xmlXPathParserContextPtr ctxt, |
xmlXPathFreeNodeSet(newset); |
xmlXPathFreeObject(obj); |
return(0); |
- } |
+ } |
/* |
* The result of the evaluation needs to be tested to |
* decide whether the filter succeeded or not |
@@ -13036,7 +13042,7 @@ xmlXPathCompOpEvalFilterFirst(xmlXPathParserContextPtr ctxt, |
res = valuePop(ctxt); |
if (xmlXPathEvaluatePredicateResult(ctxt, res)) { |
xmlXPathNodeSetAdd(newset, oldset->nodeTab[i]); |
- } |
+ } |
/* |
* Cleanup |
*/ |
@@ -13172,7 +13178,7 @@ xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op) |
total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch2]); |
CHECK_ERROR0; |
if (op->value) |
- equal = xmlXPathEqualValues(ctxt); |
+ equal = xmlXPathEqualValues(ctxt); |
else |
equal = xmlXPathNotEqualValues(ctxt); |
valuePush(ctxt, xmlXPathCacheNewBoolean(ctxt->context, equal)); |
@@ -13325,8 +13331,8 @@ xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op) |
URI = xmlXPathNsLookup(ctxt->context, op->value5); |
if (URI == NULL) { |
xmlGenericError(xmlGenericErrorContext, |
- "xmlXPathCompOpEval: variable %s bound to undefined prefix %s\n", |
- op->value4, op->value5); |
+ "xmlXPathCompOpEval: variable %s bound to undefined prefix %s\n", |
+ (char *) op->value4, (char *)op->value5); |
return (total); |
} |
val = xmlXPathVariableLookupNS(ctxt->context, |
@@ -13373,8 +13379,8 @@ xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op) |
URI = xmlXPathNsLookup(ctxt->context, op->value5); |
if (URI == NULL) { |
xmlGenericError(xmlGenericErrorContext, |
- "xmlXPathCompOpEval: function %s bound to undefined prefix %s\n", |
- op->value4, op->value5); |
+ "xmlXPathCompOpEval: function %s bound to undefined prefix %s\n", |
+ (char *)op->value4, (char *)op->value5); |
return (total); |
} |
func = xmlXPathFunctionLookupNS(ctxt->context, |
@@ -13382,8 +13388,8 @@ xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op) |
} |
if (func == NULL) { |
xmlGenericError(xmlGenericErrorContext, |
- "xmlXPathCompOpEval: function %s not found\n", |
- op->value4); |
+ "xmlXPathCompOpEval: function %s not found\n", |
+ (char *)op->value4); |
XP_ERROR0(XPATH_UNKNOWN_FUNC_ERROR); |
} |
op->cache = XML_CAST_FPTR(func); |
@@ -13581,7 +13587,7 @@ xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op) |
tmp = xmlXPathCacheNewNodeSet(ctxt->context, |
ctxt->context->node); |
valuePush(ctxt, tmp); |
- |
+ |
if (op->ch2 != -1) |
total += |
xmlXPathCompOpEval(ctxt, |
@@ -13690,7 +13696,7 @@ xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op) |
* nC 2 |
* |
* removed the first node in the node-set, then |
- * the context position of the |
+ * the context position of the |
*/ |
for (i = 0; i < oldset->nodeNr; i++) { |
/* |
@@ -13747,7 +13753,7 @@ xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op) |
} |
if (ctxt->value == tmp) { |
valuePop(ctxt); |
- xmlXPathNodeSetClear(tmp->nodesetval, 1); |
+ xmlXPathNodeSetClear(tmp->nodesetval, 1); |
/* |
* Don't free the temporary nodeset |
* in order to avoid massive recreation inside this |
@@ -13850,7 +13856,7 @@ xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op) |
res = valuePop(ctxt); |
if (res->type == XPATH_LOCATIONSET) { |
- xmlLocationSetPtr rloc = |
+ xmlLocationSetPtr rloc = |
(xmlLocationSetPtr)res->user; |
for (j=0; j<rloc->locNr; j++) { |
range = xmlXPtrNewRange( |
@@ -14012,7 +14018,7 @@ start: |
xmlXPathCompOpEval(ctxt, op); |
if (ctxt->error != XPATH_EXPRESSION_OK) |
return(-1); |
- |
+ |
resObj = valuePop(ctxt); |
if (resObj == NULL) |
return(-1); |
@@ -14033,7 +14039,7 @@ start: |
* to true if the number is equal to the context position |
* and will be converted to false otherwise;" |
*/ |
- res = xmlXPathEvaluatePredicateResult(ctxt, resObj); |
+ res = xmlXPathEvaluatePredicateResult(ctxt, resObj); |
} else { |
res = xmlXPathCastToBoolean(resObj); |
} |
@@ -14056,13 +14062,13 @@ xmlXPathRunStreamEval(xmlXPathContextPtr ctxt, xmlPatternPtr comp, |
xmlXPathObjectPtr *resultSeq, int toBool) |
{ |
int max_depth, min_depth; |
- int from_root; |
+ int from_root; |
int ret, depth; |
int eval_all_nodes; |
xmlNodePtr cur = NULL, limit = NULL; |
xmlStreamCtxtPtr patstream = NULL; |
- |
- int nb_nodes = 0; |
+ |
+ int nb_nodes = 0; |
if ((ctxt == NULL) || (comp == NULL)) |
return(-1); |
@@ -14088,7 +14094,7 @@ xmlXPathRunStreamEval(xmlXPathContextPtr ctxt, xmlPatternPtr comp, |
if (*resultSeq == NULL) |
return(-1); |
} |
- |
+ |
/* |
* handle the special cases of "/" amd "." being matched |
*/ |
@@ -14185,7 +14191,7 @@ next_node: |
ret = xmlStreamPushNode(patstream, NULL, NULL, cur->type); |
else |
break; |
- |
+ |
if (ret < 0) { |
/* NOP. */ |
} else if (ret == 1) { |
@@ -14209,7 +14215,7 @@ next_node: |
scan_children: |
if ((cur->children != NULL) && (depth < max_depth)) { |
/* |
- * Do not descend on entities declarations |
+ * Do not descend on entities declarations |
*/ |
if (cur->children->type != XML_ENTITY_DECL) { |
cur = cur->children; |
@@ -14231,7 +14237,7 @@ scan_children: |
(cur->type != XML_DTD_NODE)) |
goto next_node; |
} |
- |
+ |
do { |
cur = cur->parent; |
depth--; |
@@ -14290,7 +14296,7 @@ xmlXPathRunEval(xmlXPathParserContextPtr ctxt, int toBool) |
if (ctxt->valueTab == NULL) { |
/* Allocate the value stack */ |
- ctxt->valueTab = (xmlXPathObjectPtr *) |
+ ctxt->valueTab = (xmlXPathObjectPtr *) |
xmlMalloc(10 * sizeof(xmlXPathObjectPtr)); |
if (ctxt->valueTab == NULL) { |
xmlXPathPErrMemory(ctxt, "creating evaluation context\n"); |
@@ -14313,7 +14319,7 @@ xmlXPathRunEval(xmlXPathParserContextPtr ctxt, int toBool) |
if (res != -1) |
return(res); |
} else { |
- xmlXPathObjectPtr resObj = NULL; |
+ xmlXPathObjectPtr resObj = NULL; |
/* |
* Evaluation to a sequence. |
@@ -14326,7 +14332,7 @@ xmlXPathRunEval(xmlXPathParserContextPtr ctxt, int toBool) |
return(0); |
} |
if (resObj != NULL) |
- xmlXPathReleaseObject(ctxt->context, resObj); |
+ xmlXPathReleaseObject(ctxt->context, resObj); |
} |
/* |
* QUESTION TODO: This falls back to normal XPath evaluation |
@@ -14351,7 +14357,7 @@ xmlXPathRunEval(xmlXPathParserContextPtr ctxt, int toBool) |
/************************************************************************ |
* * |
- * Public interfaces * |
+ * Public interfaces * |
* * |
************************************************************************/ |
@@ -14367,7 +14373,7 @@ xmlXPathRunEval(xmlXPathParserContextPtr ctxt, int toBool) |
* context node in the context node list (as returned by the position |
* function) and will be converted to false otherwise; if the result |
* is not a number, then the result will be converted as if by a call |
- * to the boolean function. |
+ * to the boolean function. |
* |
* Returns 1 if predicate is true, 0 otherwise |
*/ |
@@ -14405,12 +14411,12 @@ xmlXPathEvalPredicate(xmlXPathContextPtr ctxt, xmlXPathObjectPtr res) { |
* context node in the context node list (as returned by the position |
* function) and will be converted to false otherwise; if the result |
* is not a number, then the result will be converted as if by a call |
- * to the boolean function. |
+ * to the boolean function. |
* |
* Returns 1 if predicate is true, 0 otherwise |
*/ |
int |
-xmlXPathEvaluatePredicateResult(xmlXPathParserContextPtr ctxt, |
+xmlXPathEvaluatePredicateResult(xmlXPathParserContextPtr ctxt, |
xmlXPathObjectPtr res) { |
if ((ctxt == NULL) || (res == NULL)) return(0); |
switch (res->type) { |
@@ -14483,7 +14489,7 @@ xmlXPathTryStreamCompile(xmlXPathContextPtr ctxt, const xmlChar *str) { |
tmp = xmlStrchr(str, ':'); |
if ((tmp != NULL) && |
((ctxt == NULL) || (ctxt->nsNr == 0) || (tmp[1] == ':'))) |
- return(NULL); |
+ return(NULL); |
if (ctxt != NULL) { |
dict = ctxt->dict; |
@@ -14499,7 +14505,7 @@ xmlXPathTryStreamCompile(xmlXPathContextPtr ctxt, const xmlChar *str) { |
namespaces[i++] = ns->prefix; |
} |
namespaces[i++] = NULL; |
- namespaces[i++] = NULL; |
+ namespaces[i] = NULL; |
} |
} |
@@ -14507,7 +14513,7 @@ xmlXPathTryStreamCompile(xmlXPathContextPtr ctxt, const xmlChar *str) { |
&namespaces[0]); |
if (namespaces != NULL) { |
xmlFree((xmlChar **)namespaces); |
- } |
+ } |
if ((stream != NULL) && (xmlPatternStreamable(stream) == 1)) { |
comp = xmlXPathNewCompExpr(); |
if (comp == NULL) { |
@@ -14546,30 +14552,30 @@ xmlXPathRewriteDOSExpression(xmlXPathCompExprPtr comp, xmlXPathStepOpPtr op) |
*/ |
if (op->ch1 != -1) { |
if ((op->op == XPATH_OP_COLLECT /* 11 */) && |
- ((xmlXPathAxisVal) op->value == AXIS_CHILD /* 4 */) && |
+ ((xmlXPathAxisVal) op->value == AXIS_CHILD /* 4 */) && |
((xmlXPathTestVal) op->value2 == NODE_TEST_NAME /* 5 */) && |
((xmlXPathTypeVal) op->value3 == NODE_TYPE_NODE /* 0 */)) |
{ |
/* |
* This is a "child::foo" |
*/ |
- xmlXPathStepOpPtr prevop = &comp->steps[op->ch1]; |
+ xmlXPathStepOpPtr prevop = &comp->steps[op->ch1]; |
if ((prevop->op == XPATH_OP_COLLECT /* 11 */) && |
- (prevop->ch1 != -1) && |
+ (prevop->ch1 != -1) && |
((xmlXPathAxisVal) prevop->value == |
AXIS_DESCENDANT_OR_SELF) && |
(prevop->ch2 == -1) && |
((xmlXPathTestVal) prevop->value2 == NODE_TEST_TYPE) && |
((xmlXPathTypeVal) prevop->value3 == NODE_TYPE_NODE) && |
(comp->steps[prevop->ch1].op == XPATH_OP_ROOT)) |
- { |
+ { |
/* |
* This is a "/descendant-or-self::node()" without predicates. |
* Eliminate it. |
*/ |
op->ch1 = prevop->ch1; |
- op->rewriteType = XP_REWRITE_DOS_CHILD_ELEM; |
+ op->rewriteType = XP_REWRITE_DOS_CHILD_ELEM; |
} |
} |
if (op->ch1 != -1) |
@@ -14614,7 +14620,7 @@ xmlXPathCtxtCompile(xmlXPathContextPtr ctxt, const xmlChar *str) { |
} |
if (*pctxt->cur != 0) { |
- /* |
+ /* |
* aleksey: in some cases this line prints *second* error message |
* (see bug #78858) and probably this should be fixed. |
* However, we are not sure that all error messages are printed |
@@ -14633,7 +14639,7 @@ xmlXPathCtxtCompile(xmlXPathContextPtr ctxt, const xmlChar *str) { |
#ifdef DEBUG_EVAL_COUNTS |
comp->string = xmlStrdup(str); |
comp->nb = 0; |
-#endif |
+#endif |
if ((comp->expr != NULL) && |
(comp->nbStep > 2) && |
(comp->last >= 0) && |
@@ -14678,7 +14684,7 @@ xmlXPathCompiledEvalInternal(xmlXPathCompExprPtr comp, |
xmlXPathObjectPtr *resObj, |
int toBool) |
{ |
- xmlXPathParserContextPtr pctxt; |
+ xmlXPathParserContextPtr pctxt; |
#ifndef LIBXML_THREAD_ENABLED |
static int reentance = 0; |
#endif |
@@ -14707,15 +14713,15 @@ xmlXPathCompiledEvalInternal(xmlXPathCompExprPtr comp, |
res = xmlXPathRunEval(pctxt, toBool); |
if (resObj) { |
- if (pctxt->value == NULL) { |
+ if (pctxt->value == NULL) { |
xmlGenericError(xmlGenericErrorContext, |
"xmlXPathCompiledEval: evaluation failed\n"); |
- *resObj = NULL; |
+ *resObj = NULL; |
} else { |
*resObj = valuePop(pctxt); |
} |
} |
- |
+ |
/* |
* Pop all remaining objects from the stack. |
*/ |
@@ -14726,7 +14732,7 @@ xmlXPathCompiledEvalInternal(xmlXPathCompExprPtr comp, |
do { |
tmp = valuePop(pctxt); |
if (tmp != NULL) { |
- stack++; |
+ stack++; |
xmlXPathReleaseObject(ctxt, tmp); |
} |
} while (tmp != NULL); |
@@ -14738,11 +14744,11 @@ xmlXPathCompiledEvalInternal(xmlXPathCompExprPtr comp, |
stack); |
} |
} |
- |
+ |
if ((pctxt->error != XPATH_EXPRESSION_OK) && (resObj) && (*resObj)) { |
xmlXPathFreeObject(*resObj); |
*resObj = NULL; |
- } |
+ } |
pctxt->comp = NULL; |
xmlXPathFreeParserContext(pctxt); |
#ifndef LIBXML_THREAD_ENABLED |
@@ -14803,7 +14809,7 @@ xmlXPathEvalExpr(xmlXPathParserContextPtr ctxt) { |
#endif |
if (ctxt == NULL) return; |
- |
+ |
#ifdef XPATH_STREAMING |
comp = xmlXPathTryStreamCompile(ctxt->context, ctxt->base); |
if (comp != NULL) { |
@@ -14831,7 +14837,7 @@ xmlXPathEvalExpr(xmlXPathParserContextPtr ctxt) { |
} |
} |
CHECK_ERROR; |
- xmlXPathRunEval(ctxt, 0); |
+ xmlXPathRunEval(ctxt, 0); |
} |
/** |
@@ -14863,7 +14869,7 @@ xmlXPathEval(const xmlChar *str, xmlXPathContextPtr ctx) { |
xmlGenericError(xmlGenericErrorContext, |
"xmlXPathEval: evaluation failed\n"); |
res = NULL; |
- } else if ((*ctxt->cur != 0) && (ctxt->comp != NULL) |
+ } else if ((*ctxt->cur != 0) && (ctxt->comp != NULL) |
#ifdef XPATH_STREAMING |
&& (ctxt->comp->stream == NULL) |
#endif |
@@ -14976,21 +14982,21 @@ xmlXPathEvalExpression(const xmlChar *str, xmlXPathContextPtr ctxt) { |
* If $escape-reserved is false, the behavior differs in that characters |
* referred to in [RFC 2396] as reserved characters are not escaped. These |
* characters are ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | ",". |
- * |
+ * |
* [RFC 2396] does not define whether escaped URIs should use lower case or |
* upper case for hexadecimal digits. To ensure that escaped URIs can be |
* compared using string comparison functions, this function must always use |
* the upper-case letters A-F. |
- * |
+ * |
* Generally, $escape-reserved should be set to true when escaping a string |
* that is to form a single part of a URI, and to false when escaping an |
* entire URI or URI reference. |
- * |
- * In the case of non-ascii characters, the string is encoded according to |
+ * |
+ * In the case of non-ascii characters, the string is encoded according to |
* utf-8 and then converted according to RFC 2396. |
* |
* Examples |
- * xf:escape-uri ("gopher://spinaltap.micro.umn.edu/00/Weather/California/Los%20Angeles#ocean"), true()) |
+ * xf:escape-uri ("gopher://spinaltap.micro.umn.edu/00/Weather/California/Los%20Angeles#ocean"), true()) |
* returns "gopher%3A%2F%2Fspinaltap.micro.umn.edu%2F00%2FWeather%2FCalifornia%2FLos%20Angeles%23ocean" |
* xf:escape-uri ("gopher://spinaltap.micro.umn.edu/00/Weather/California/Los%20Angeles#ocean"), false()) |
* returns "gopher://spinaltap.micro.umn.edu/00/Weather/California/Los%20Angeles%23ocean" |
@@ -15003,28 +15009,28 @@ xmlXPathEscapeUriFunction(xmlXPathParserContextPtr ctxt, int nargs) { |
xmlBufferPtr target; |
xmlChar *cptr; |
xmlChar escape[4]; |
- |
+ |
CHECK_ARITY(2); |
- |
+ |
escape_reserved = xmlXPathPopBoolean(ctxt); |
- |
+ |
CAST_TO_STRING; |
str = valuePop(ctxt); |
- |
+ |
target = xmlBufferCreate(); |
- |
+ |
escape[0] = '%'; |
escape[3] = 0; |
- |
+ |
if (target) { |
for (cptr = str->stringval; *cptr; cptr++) { |
if ((*cptr >= 'A' && *cptr <= 'Z') || |
(*cptr >= 'a' && *cptr <= 'z') || |
(*cptr >= '0' && *cptr <= '9') || |
- *cptr == '-' || *cptr == '_' || *cptr == '.' || |
+ *cptr == '-' || *cptr == '_' || *cptr == '.' || |
*cptr == '!' || *cptr == '~' || *cptr == '*' || |
*cptr == '\''|| *cptr == '(' || *cptr == ')' || |
- (*cptr == '%' && |
+ (*cptr == '%' && |
((cptr[1] >= 'A' && cptr[1] <= 'F') || |
(cptr[1] >= 'a' && cptr[1] <= 'f') || |
(cptr[1] >= '0' && cptr[1] <= '9')) && |
@@ -15046,7 +15052,7 @@ xmlXPathEscapeUriFunction(xmlXPathParserContextPtr ctxt, int nargs) { |
escape[2] = '0' + (*cptr & 0xF); |
else |
escape[2] = 'A' - 10 + (*cptr & 0xF); |
- |
+ |
xmlBufferAdd(target, &escape[0], 3); |
} |
} |