dbertoni    00/06/07 11:16:01

  Modified:    c/src/XPath SimpleNodeLocator.cpp SimpleNodeLocator.hpp
  Log:
  Fixed bug in stepPattern().
  
  Revision  Changes    Path
  1.14      +17 -5     xml-xalan/c/src/XPath/SimpleNodeLocator.cpp
  
  Index: SimpleNodeLocator.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/SimpleNodeLocator.cpp,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- SimpleNodeLocator.cpp     2000/06/06 16:54:26     1.13
  +++ SimpleNodeLocator.cpp     2000/06/07 18:16:01     1.14
  @@ -405,7 +405,7 @@
                        XPathExecutionContext&  executionContext,
                        XalanNode*                              context, 
                        int                                     opPos,
  -                     double&                                 score)
  +                     double&                                 scoreHolder)
   {
        const XPathExpression&  currentExpression =
                xpath.getExpression();
  @@ -425,17 +425,21 @@
                                                                   
executionContext,
                                                                   localContext,
                                                                   endStep,
  -                                                                score);
  +                                                                scoreHolder);
   
                if(0 == localContext)
                {
  -                     score = xpath.s_MatchScoreNone;
  +                     scoreHolder = xpath.s_MatchScoreNone;
  +
  +             }
   
  +             if (scoreHolder == xpath.s_MatchScoreNone)
  +             {
                        // !!!!!!!!!!!!! Big ugly return here 
!!!!!!!!!!!!!!!!!!!
                        return 0;
                }
   
  -             score = xpath.s_MatchScoreOther;
  +             scoreHolder = xpath.s_MatchScoreOther;
   
                localContext = executionContext.getParentOfNode(*localContext);
   
  @@ -448,8 +452,10 @@
   
        assert(localContext != 0);
   
  -     int argLen = 0;
  +     int                     argLen = 0;
   
  +     double          score = xpath.s_MatchScoreNone;
  +
        switch(stepType)
        {
        case XPathExpression::eOP_FUNCTION:
  @@ -651,6 +657,12 @@
                                }
                        }
                }
  +     }
  +
  +     if (scoreHolder == xpath.s_MatchScoreNone || 
  +        score == xpath.s_MatchScoreNone)
  +     {
  +             scoreHolder = score;
        }
   
        return score == xpath.s_MatchScoreNone ? 0 : localContext;
  
  
  
  1.7       +1 -1      xml-xalan/c/src/XPath/SimpleNodeLocator.hpp
  
  Index: SimpleNodeLocator.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/SimpleNodeLocator.hpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SimpleNodeLocator.hpp     2000/04/11 14:46:11     1.6
  +++ SimpleNodeLocator.hpp     2000/06/07 18:16:01     1.7
  @@ -144,7 +144,7 @@
                        XPathExecutionContext&  executionContext,
                        XalanNode*                              context, 
                        int                                     opPos,
  -                     double&                                 score);
  +                     double&                                 scoreHolder);
   
        int
        findNodeSet(
  
  
  

Reply via email to