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