neilg       2002/09/04 08:51:40

  Modified:    java/src/org/apache/xerces/impl/xpath XPath.java
  Log:
  "fix" for bug 5950.  The bug itself is not valid,
  but a modification of it whowed that our handling of . in XPath expressions--both
  with and without surrounding whitespace--was broken when unions are in use.
  
  Revision  Changes    Path
  1.9       +22 -3     xml-xerces/java/src/org/apache/xerces/impl/xpath/XPath.java
  
  Index: XPath.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/xpath/XPath.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- XPath.java        29 Aug 2002 23:25:43 -0000      1.8
  +++ XPath.java        4 Sep 2002 15:51:40 -0000       1.9
  @@ -1422,6 +1422,25 @@
                           addToken(tokens, XPath.Tokens.EXPRTOKEN_PERIOD);
                           starIsMultiplyOperator = true;
                           currentOffset++;
  +                    } else if (ch == '|') {
  +                        addToken(tokens, XPath.Tokens.EXPRTOKEN_PERIOD);
  +                        starIsMultiplyOperator = true;
  +                        currentOffset++;
  +                        break;
  +                    } else if (ch == ' ' || ch == 0x0A || ch == 0x09 || ch == 0x0D) 
{
  +                        // this is legal if the next token is non-existent or |
  +                        do {
  +                            if (++currentOffset == endOffset) {
  +                                break;
  +                            }
  +                            ch = data.charAt(currentOffset);
  +                        } while (ch == ' ' || ch == 0x0A || ch == 0x09 || ch == 
0x0D); 
  +                        if (currentOffset == endOffset || ch == '|') {
  +                            addToken(tokens, XPath.Tokens.EXPRTOKEN_PERIOD);
  +                            starIsMultiplyOperator = true;
  +                            break;
  +                        }
  +                        throw new XPathException ("c-general-xpath");
                       } else {                    // '.'
                           throw new XPathException ("c-general-xpath");
                       }
  
  
  

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

Reply via email to