Changeset 191364 in webkit for trunk/Source/JavaScriptCore/yarr/YarrPattern.cpp
- Timestamp:
- Oct 20, 2015, 4:38:41 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/yarr/YarrPattern.cpp
r177820 r191364 740 740 } 741 741 742 bool containsCapturingTerms(PatternAlternative* alternative, size_t firstTermIndex, size_t lastTermIndex)742 bool containsCapturingTerms(PatternAlternative* alternative, size_t firstTermIndex, size_t endIndex) 743 743 { 744 744 Vector<PatternTerm>& terms = alternative->m_terms; 745 745 746 for (size_t termIndex = firstTermIndex; termIndex <= lastTermIndex; ++termIndex) { 746 ASSERT(endIndex <= terms.size()); 747 for (size_t termIndex = firstTermIndex; termIndex < endIndex; ++termIndex) { 747 748 PatternTerm& term = terms[termIndex]; 748 749 … … 753 754 PatternDisjunction* nestedDisjunction = term.parentheses.disjunction; 754 755 for (unsigned alt = 0; alt < nestedDisjunction->m_alternatives.size(); ++alt) { 755 if (containsCapturingTerms(nestedDisjunction->m_alternatives[alt].get(), 0, nestedDisjunction->m_alternatives[alt]->m_terms.size() - 1))756 if (containsCapturingTerms(nestedDisjunction->m_alternatives[alt].get(), 0, nestedDisjunction->m_alternatives[alt]->m_terms.size())) 756 757 return true; 757 758 } … … 778 779 bool startsWithBOL = false; 779 780 bool endsWithEOL = false; 780 size_t termIndex, firstExpressionTerm , lastExpressionTerm;781 size_t termIndex, firstExpressionTerm; 781 782 782 783 termIndex = 0; … … 801 802 if ((lastNonAnchorTerm.type != PatternTerm::TypeCharacterClass) || (lastNonAnchorTerm.characterClass != m_pattern.newlineCharacterClass()) || (lastNonAnchorTerm.quantityType != QuantifierGreedy)) 802 803 return; 803 804 lastExpressionTerm = termIndex - 1; 805 806 if (firstExpressionTerm > lastExpressionTerm) 804 805 size_t endIndex = termIndex; 806 if (firstExpressionTerm >= endIndex) 807 807 return; 808 808 809 if (!containsCapturingTerms(alternative, firstExpressionTerm, lastExpressionTerm)) {810 for (termIndex = terms.size() - 1; termIndex > lastExpressionTerm; --termIndex)809 if (!containsCapturingTerms(alternative, firstExpressionTerm, endIndex)) { 810 for (termIndex = terms.size() - 1; termIndex >= endIndex; --termIndex) 811 811 terms.remove(termIndex); 812 812
Note:
See TracChangeset
for help on using the changeset viewer.