mhoyt       2005/01/07 15:49:30

  Modified:    c/src/xalanc/XSLT ElemForEach.cpp
                        StylesheetExecutionContextDefault.cpp
  Log:
  Fixed two issues:  No exception should be generated if <xsl:for-each> 
contains variables and no nodes are selected.    In addition, if an exception 
occurs elsewhere, assertion/abort should not occur when resetting the execution 
context
  PR: XALANC-447
  
  Revision  Changes    Path
  1.16      +6 -1      xml-xalan/c/src/xalanc/XSLT/ElemForEach.cpp
  
  Index: ElemForEach.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/xalanc/XSLT/ElemForEach.cpp,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- ElemForEach.cpp   10 Dec 2004 04:01:51 -0000      1.15
  +++ ElemForEach.cpp   7 Jan 2005 23:49:29 -0000       1.16
  @@ -252,7 +252,12 @@
   {
        if (hasChildren() == true)
        {
  -             endExecuteChildren(executionContext);
  +             // Children only executed if there were selected nodes
  +             if(executionContext.getContextNodeList().getLength() > 0)
  +             {
  +                 endExecuteChildren(executionContext);
  +             }
  +
                executionContext.popNodesToTransformList();
                executionContext.popContextNodeList();
                releaseSelectedAndSortedNodeList(executionContext);
  
  
  
  1.37      +4 -1      
xml-xalan/c/src/xalanc/XSLT/StylesheetExecutionContextDefault.cpp
  
  Index: StylesheetExecutionContextDefault.cpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/c/src/xalanc/XSLT/StylesheetExecutionContextDefault.cpp,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- StylesheetExecutionContextDefault.cpp     14 Nov 2004 21:13:08 -0000      
1.36
  +++ StylesheetExecutionContextDefault.cpp     7 Jan 2005 23:49:29 -0000       
1.37
  @@ -1912,6 +1912,10 @@
   
        m_variablesStack.reset();
   
  +#if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION)
  +     m_xobjectPtrStack.clear();
  +#endif
  +
        if (m_xsltProcessor != 0)
        {
                m_xsltProcessor->reset();
  @@ -1953,7 +1957,6 @@
        m_currentIndexStack.clear();
   
   #if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION)
  -     m_xobjectPtrStack.clear();
        m_nodesToTransformStack.clear();
        m_processCurrentAttributeStack.clear();
        m_skipElementAttributesStack.clear();
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to