jkesselm 02/05/14 13:33:18
Modified: java/src/org/apache/xalan/templates ElemVariable.java
Log:
Bugzilla 7118: Variable set via RTF may have
local variables within it; need to push a new
context.
(This anonymous-pseudotemplate thing has
caused us more confusion....)
Revision Changes Path
1.18 +15 -6
xml-xalan/java/src/org/apache/xalan/templates/ElemVariable.java
Index: ElemVariable.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemVariable.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- ElemVariable.java 29 Mar 2002 15:22:12 -0000 1.17
+++ ElemVariable.java 14 May 2002 20:33:18 -0000 1.18
@@ -280,6 +280,7 @@
transformer.getTraceManager().fireTraceEvent(this);
int sourceNode = transformer.getXPathContext().getCurrentNode();
+
XObject var = getValue(transformer, sourceNode);
// transformer.getXPathContext().getVarStack().pushVariable(m_qname,
var);
@@ -307,7 +308,7 @@
XPathContext xctxt = transformer.getXPathContext();
xctxt.pushCurrentNode(sourceNode);
-
+
try
{
if (null != m_selectPattern)
@@ -333,16 +334,24 @@
// so they aren't popped off the stack on return from a template.
int df;
- if(m_parentNode instanceof Stylesheet) // Global variable
- df = transformer.transformToGlobalRTF(this);
- else
- df = transformer.transformToRTF(this);
+ // Bugzilla 7118: A variable set via an RTF may create local
+ // variables during that computation. To keep them from
overwriting
+ // variables at this level, push a new variable stack.
+ try
+ {
+ xctxt.getVarStack().link(0);
+ if(m_parentNode instanceof Stylesheet) // Global
variable
+ df = transformer.transformToGlobalRTF(this);
+ else
+ df = transformer.transformToRTF(this);
+ }
+ finally{ xctxt.getVarStack().unlink(); }
var = new XRTreeFrag(df, xctxt, this);
}
}
finally
- {
+ {
xctxt.popCurrentNode();
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]