23 lines
779 B
Diff
23 lines
779 B
Diff
--- a/xpath.c
|
|
+++ a/xpath.c
|
|
@@ -11763,11 +11763,16 @@ xmlXPathCompOpEvalPositionalPredicate(xmlXPathParserContextPtr ctxt,
|
|
|
|
if ((ctxt->error != XPATH_EXPRESSION_OK) || (res == -1)) {
|
|
xmlXPathObjectPtr tmp;
|
|
- /* pop the result */
|
|
+ /* pop the result if any */
|
|
tmp = valuePop(ctxt);
|
|
- xmlXPathReleaseObject(xpctxt, tmp);
|
|
- /* then pop off contextObj, which will be freed later */
|
|
- valuePop(ctxt);
|
|
+ if (tmp != contextObj) {
|
|
+ /*
|
|
+ * Free up the result
|
|
+ * then pop off contextObj, which will be freed later
|
|
+ */
|
|
+ xmlXPathReleaseObject(xpctxt, tmp);
|
|
+ valuePop(ctxt);
|
|
+ }
|
|
goto evaluation_error;
|
|
}
|