blob: 57b368857d9feb63dd01988281ed8916860a0eb3 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
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<txAExprResult> 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);
|