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]