Bug 2025973 - Use value-semantics for txExecutionState::TemplateRule

TemplateRule is a wrapper around references mostly and can for the
purposes of this function be copied to the stack, given that
TemplateRule::mModeNsId is not mutated there.
This commit is contained in:
Simon Farre
2026-04-25 15:03:37 +02:00
committed by roytam1
parent e4fd587adf
commit d419d35337
+6 -6
View File
@@ -39,25 +39,25 @@ txApplyDefaultElementTemplate::execute(txExecutionState& aEs)
nsresult
txApplyImports::execute(txExecutionState& aEs)
{
txExecutionState::TemplateRule* rule = aEs.getCurrentTemplateRule();
txExecutionState::TemplateRule rule = *aEs.getCurrentTemplateRule();
// The frame is set to null when there is no current template rule, or
// when the current template rule is a default template. However this
// instruction isn't used in default templates.
if (!rule->mFrame) {
if (!rule.mFrame) {
// XXX ErrorReport: apply-imports instantiated without a current rule
return NS_ERROR_XSLT_EXECUTION_FAILURE;
}
nsresult rv = aEs.pushParamMap(rule->mParams);
nsresult rv = aEs.pushParamMap(rule.mParams);
NS_ENSURE_SUCCESS(rv, rv);
txStylesheet::ImportFrame* frame = 0;
txExpandedName mode(rule->mModeNsId, rule->mModeLocalName);
txExpandedName mode(rule.mModeNsId, rule.mModeLocalName);
txInstruction* templ =
aEs.mStylesheet->findTemplate(aEs.getEvalContext()->getContextNode(),
mode, &aEs, rule->mFrame, &frame);
mode, &aEs, rule.mFrame, &frame);
aEs.pushTemplateRule(frame, mode, rule->mParams);
aEs.pushTemplateRule(frame, mode, rule.mParams);
rv = aEs.runTemplate(templ);