neilg 2003/11/15 14:03:22 Modified: java/src/org/apache/xerces/impl/xs/identity XPathMatcher.java Selector.java Log: fix for bug 24692 Revision Changes Path 1.20 +10 -7 xml-xerces/java/src/org/apache/xerces/impl/xs/identity/XPathMatcher.java Index: XPathMatcher.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/xs/identity/XPathMatcher.java,v retrieving revision 1.19 retrieving revision 1.20 diff -u -r1.19 -r1.20 --- XPathMatcher.java 12 Nov 2003 23:17:34 -0000 1.19 +++ XPathMatcher.java 15 Nov 2003 22:03:22 -0000 1.20 @@ -172,13 +172,16 @@ * Returns value of first member of fMatched that * is nonzero. */ - public int isMatched() { + public boolean isMatched() { // xpath has been matched if any one of the members of the union have matched. - for (int i=0; i < fLocationPaths.length; i++) - if (((fMatched[i] & MATCHED) == MATCHED) && - ((fMatched[i] & MATCHED_DESCENDANT_PREVIOUS) != MATCHED_DESCENDANT_PREVIOUS)) - return fMatched[i]; - return 0; + for (int i=0; i < fLocationPaths.length; i++) + if (((fMatched[i] & MATCHED) == MATCHED) + && ((fMatched[i] & MATCHED_DESCENDANT_PREVIOUS) != MATCHED_DESCENDANT_PREVIOUS) + && ((fNoMatchDepth[i] == 0) + || ((fMatched[i] & MATCHED_DESCENDANT) == MATCHED_DESCENDANT))) + return true; + + return false; } // isMatched():int // 1.16 +6 -5 xml-xerces/java/src/org/apache/xerces/impl/xs/identity/Selector.java Index: Selector.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/xs/identity/Selector.java,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- Selector.java 11 Nov 2003 20:14:59 -0000 1.15 +++ Selector.java 15 Nov 2003 22:03:22 -0000 1.16 @@ -250,10 +250,11 @@ super.startElement(element, attributes); fElementDepth++; // activate the fields, if selector is matched - int matched = isMatched(); + //int matched = isMatched(); - if ((fMatchedDepth == -1 && ((matched & MATCHED) == MATCHED)) || - ((matched & MATCHED_DESCENDANT) == MATCHED_DESCENDANT)) { + if (isMatched()) { +/* (fMatchedDepth == -1 && ((matched & MATCHED) == MATCHED)) || + ((matched & MATCHED_DESCENDANT) == MATCHED_DESCENDANT)) { */ fMatchedDepth = fElementDepth; fFieldActivator.startValueScopeFor(fIdentityConstraint, fInitialDepth); int count = fIdentityConstraint.getFieldCount();
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]