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]