Index: third_party/libxml/src/xpointer.c |
diff --git a/third_party/libxml/src/xpointer.c b/third_party/libxml/src/xpointer.c |
index 676c5105837a2c9c9593d3ec903a3d5547e9070e..d74174a318f145e108614770fdda089c9fa9ddaa 100644 |
--- a/third_party/libxml/src/xpointer.c |
+++ b/third_party/libxml/src/xpointer.c |
@@ -1332,8 +1332,6 @@ xmlXPtrNewContext(xmlDocPtr doc, xmlNodePtr here, xmlNodePtr origin) { |
ret->here = here; |
ret->origin = origin; |
- xmlXPathRegisterFunc(ret, (xmlChar *)"range-to", |
- xmlXPtrRangeToFunction); |
xmlXPathRegisterFunc(ret, (xmlChar *)"range", |
xmlXPtrRangeFunction); |
xmlXPathRegisterFunc(ret, (xmlChar *)"range-inside", |
@@ -2243,76 +2241,14 @@ xmlXPtrRangeInsideFunction(xmlXPathParserContextPtr ctxt, int nargs) { |
* @nargs: the number of args |
* |
* Implement the range-to() XPointer function |
+ * |
+ * Obsolete. range-to is not a real function but a special type of location |
+ * step which is handled in xpath.c. |
*/ |
void |
-xmlXPtrRangeToFunction(xmlXPathParserContextPtr ctxt, int nargs) { |
- xmlXPathObjectPtr range; |
- const xmlChar *cur; |
- xmlXPathObjectPtr res, obj; |
- xmlXPathObjectPtr tmp; |
- xmlLocationSetPtr newset = NULL; |
- xmlNodeSetPtr oldset; |
- int i; |
- |
- if (ctxt == NULL) return; |
- CHECK_ARITY(1); |
- /* |
- * Save the expression pointer since we will have to evaluate |
- * it multiple times. Initialize the new set. |
- */ |
- CHECK_TYPE(XPATH_NODESET); |
- obj = valuePop(ctxt); |
- oldset = obj->nodesetval; |
- ctxt->context->node = NULL; |
- |
- cur = ctxt->cur; |
- newset = xmlXPtrLocationSetCreate(NULL); |
- |
- for (i = 0; i < oldset->nodeNr; i++) { |
- ctxt->cur = cur; |
- |
- /* |
- * Run the evaluation with a node list made of a single item |
- * in the nodeset. |
- */ |
- ctxt->context->node = oldset->nodeTab[i]; |
- tmp = xmlXPathNewNodeSet(ctxt->context->node); |
- valuePush(ctxt, tmp); |
- |
- xmlXPathEvalExpr(ctxt); |
- CHECK_ERROR; |
- |
- /* |
- * The result of the evaluation need to be tested to |
- * decided whether the filter succeeded or not |
- */ |
- res = valuePop(ctxt); |
- range = xmlXPtrNewRangeNodeObject(oldset->nodeTab[i], res); |
- if (range != NULL) { |
- xmlXPtrLocationSetAdd(newset, range); |
- } |
- |
- /* |
- * Cleanup |
- */ |
- if (res != NULL) |
- xmlXPathFreeObject(res); |
- if (ctxt->value == tmp) { |
- res = valuePop(ctxt); |
- xmlXPathFreeObject(res); |
- } |
- |
- ctxt->context->node = NULL; |
- } |
- |
- /* |
- * The result is used as the new evaluation set. |
- */ |
- xmlXPathFreeObject(obj); |
- ctxt->context->node = NULL; |
- ctxt->context->contextSize = -1; |
- ctxt->context->proximityPosition = -1; |
- valuePush(ctxt, xmlXPtrWrapLocationSet(newset)); |
+xmlXPtrRangeToFunction(xmlXPathParserContextPtr ctxt, |
+ int nargs ATTRIBUTE_UNUSED) { |
+ XP_ERROR(XPATH_EXPR_ERROR); |
} |
/** |