You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by jy...@apache.org on 2004/02/02 22:53:28 UTC
cvs commit: xml-xalan/java/src/org/apache/xalan/templates ElemApplyTemplates.java
jycli 2004/02/02 13:53:27
Modified: java/src/org/apache/xalan/templates ElemApplyTemplates.java
Log:
Fix for bugzilla bug report 19464
A reworked patch, move the push statements to the beginning of try block
and added a flag to make sure that there is always something to pop
Reviewed by Henry Zongaro (zongaro@ca.ibm.com)
Revision Changes Path
1.32 +12 -8 xml-xalan/java/src/org/apache/xalan/templates/ElemApplyTemplates.java
Index: ElemApplyTemplates.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemApplyTemplates.java,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -r1.31 -r1.32
--- ElemApplyTemplates.java 17 Oct 2003 20:59:19 -0000 1.31
+++ ElemApplyTemplates.java 2 Feb 2004 21:53:27 -0000 1.32
@@ -248,10 +248,16 @@
int thisframe = vars.getStackFrame();
StackGuard guard = transformer.getStackGuard();
boolean check = (guard.getRecursionLimit() > -1) ? true : false;
+
+ boolean pushContextNodeListFlag = false;
try
{
+ xctxt.pushCurrentNode(DTM.NULL);
+ xctxt.pushCurrentExpressionNode(DTM.NULL);
+ xctxt.pushSAXLocatorNull();
+ transformer.pushElemTemplateElement(null);
final Vector keys = (m_sortElems == null)
? null
: transformer.processSortKeys(this, sourceNode);
@@ -259,7 +265,7 @@
// Sort if we need to.
if (null != keys)
sourceNodes = sortNodes(xctxt, keys, sourceNodes);
-
+
if (TransformerImpl.S_DEBUG)
{
transformer.getTraceManager().fireSelectedEvent(sourceNode, this,
@@ -299,15 +305,13 @@
vars.setStackFrame(argsFrame);
}
- xctxt.pushCurrentNode(DTM.NULL);
+ xctxt.pushContextNodeList(sourceNodes);
+ pushContextNodeListFlag = true;
+
IntStack currentNodes = xctxt.getCurrentNodeStack();
- xctxt.pushCurrentExpressionNode(DTM.NULL);
IntStack currentExpressionNodes = xctxt.getCurrentExpressionNodeStack();
-
- xctxt.pushSAXLocatorNull();
- xctxt.pushContextNodeList(sourceNodes);
- transformer.pushElemTemplateElement(null);
+
// pushParams(transformer, xctxt);
int child;
@@ -477,7 +481,7 @@
if(nParams > 0)
vars.unlink(thisframe);
xctxt.popSAXLocator();
- xctxt.popContextNodeList();
+ if (pushContextNodeListFlag) xctxt.popContextNodeList();
transformer.popElemTemplateElement();
xctxt.popCurrentExpressionNode();
xctxt.popCurrentNode();
---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org