Bug 485217 - Pop the eval context before returning. r+sr=peterv diff --git a/extensions/transformiix/source/xslt/functions/txKeyFunctionCall.cpp b/extensions/transformiix/source/xslt/functions/txKeyFunctionCall.cpp --- extensions/transformiix/source/xslt/functions/txKeyFunctionCall.cpp +++ extensions/transformiix/source/xslt/functions/txKeyFunctionCall.cpp @@ -408,20 +408,19 @@ nsresult txXSLKey::testNode(const txXPat if (key->matchPattern->matches(aNode, &aEs)) { txSingleNodeContext evalContext(aNode, &aEs); nsresult rv = aEs.pushEvalContext(&evalContext); NS_ENSURE_SUCCESS(rv, rv); nsRefPtr exprResult; rv = key->useExpr->evaluate(&evalContext, getter_AddRefs(exprResult)); + aEs.popEvalContext(); NS_ENSURE_SUCCESS(rv, rv); - aEs.popEvalContext(); - if (exprResult->getResultType() == txAExprResult::NODESET) { txNodeSet* res = NS_STATIC_CAST(txNodeSet*, NS_STATIC_CAST(txAExprResult*, exprResult)); PRInt32 i; for (i = 0; i < res->size(); ++i) { val.Truncate(); txXPathNodeUtils::appendNodeValue(res->get(i), val);