From 088bf1163080cbbb72ba9d4a52ab08cc7c8ff6c7 Mon Sep 17 00:00:00 2001 From: Daniel Veillard Date: Tue, 14 May 2002 11:03:59 +0000 Subject: [PATCH] fixing an XPath function evalutation bug pointed out by Alexey Efimov * xpath.c: fixing an XPath function evalutation bug pointed out by Alexey Efimov where the context was lost when evaluating the function arguments Daniel --- ChangeLog | 7 +++++++ xpath.c | 6 ++++++ 2 files changed, 13 insertions(+) diff --git a/ChangeLog b/ChangeLog index 53ed9c49..846645c6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,11 @@ +Tue May 14 13:00:48 CEST 2002 Daniel Veillard + + * xpath.c: fixing an XPath function evalutation bug pointed out + by Alexey Efimov where the context was lost when evaluating + the function arguments + Mon 13 May 2002 11:37:39 PM PDT Aleksey Sanin + * xpath.c include/libxml/xpathInternals.h: maked xmlXPathNodeSetAddNs() function public for XMLSec performance optimizations diff --git a/xpath.c b/xpath.c index 99c3d2ee..7f1f87a2 100644 --- a/xpath.c +++ b/xpath.c @@ -9861,11 +9861,17 @@ xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op) return (total); } case XPATH_OP_ARG: + bakd = ctxt->context->doc; + bak = ctxt->context->node; if (op->ch1 != -1) total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]); + ctxt->context->doc = bakd; + ctxt->context->node = bak; CHECK_ERROR0; if (op->ch2 != -1) total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch2]); + ctxt->context->doc = bakd; + ctxt->context->node = bak; CHECK_ERROR0; return (total); case XPATH_OP_PREDICATE: