dbertoni    2003/07/30 08:45:26

  Modified:    c/src/xalanc/XPath XPath.cpp
  Log:
  Make sure all empty node-sets have document order.
  
  Revision  Changes    Path
  1.3       +21 -23    xml-xalan/c/src/xalanc/XPath/XPath.cpp
  
  Index: XPath.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/xalanc/XPath/XPath.cpp,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- XPath.cpp 2 Jul 2003 21:32:11 -0000       1.2
  +++ XPath.cpp 30 Jul 2003 15:45:26 -0000      1.3
  @@ -2917,37 +2917,35 @@
        {
                const NodeRefListBase::size_type        nContexts = 
subQueryResults->getLength();
   
  -             if (nContexts == 0 && queryResults.empty() == true)
  +             for(NodeRefListBase::size_type i = 0; i < nContexts; i++)
                {
  -                     queryResults.setDocumentOrder();
  -             }
  -             else
  -             {
  -                     for(NodeRefListBase::size_type i = 0; i < nContexts; 
i++)
  -                     {
  -                             XalanNode* const        node = 
subQueryResults->item(i);
  -                             assert(node != 0);
  +                     XalanNode* const        node = subQueryResults->item(i);
  +                     assert(node != 0);
  +
  +                     BorrowReturnMutableNodeRefList  mnl(executionContext);
   
  -                             BorrowReturnMutableNodeRefList  
mnl(executionContext);
  +                     step(executionContext, node, opPos, *mnl);
   
  -                             step(executionContext, node, opPos, *mnl);
  +                     if (mnl->empty() == false)
  +                     {
  +                             if(queryResults.empty() == false)
  +                             {
  +                                     queryResults.addNodesInDocOrder(*mnl, 
executionContext);
   
  -                             if (mnl->empty() == false)
  +                                     queryResults.setDocumentOrder();
  +                             }
  +                             else
                                {
  -                                     if(queryResults.empty() == false)
  -                                     {
  -                                             
queryResults.addNodesInDocOrder(*mnl, executionContext);
  -
  -                                             queryResults.setDocumentOrder();
  -                                     }
  -                                     else
  -                                     {
  -                                             assert(mnl->getDocumentOrder() 
== true);
  +                                     assert(mnl->getDocumentOrder() == true);
   
  -                                             queryResults.swap(*mnl);
  -                                     }
  +                                     queryResults.swap(*mnl);
                                }
                        }
  +             }
  +
  +             if (queryResults.empty() == true)
  +             {
  +                     queryResults.setDocumentOrder();
                }
        }
        else
  
  
  

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

Reply via email to