| Index: regexp2000/src/parser.cc
|
| diff --git a/regexp2000/src/parser.cc b/regexp2000/src/parser.cc
|
| index 09fd1cafac302cca499d2330133bd4a5cf490af3..faca81ba52d0a99b57317dd7504683c596bf80fc 100644
|
| --- a/regexp2000/src/parser.cc
|
| +++ b/regexp2000/src/parser.cc
|
| @@ -3820,6 +3820,7 @@ CharacterRange RegExpParser::ParseClassAtom(bool* ok) {
|
| RegExpTree* RegExpParser::ParseCharacterClass(bool* ok) {
|
| static const char* kUnterminated = "Unterminated character class";
|
| static const char* kIllegal = "Illegal character class";
|
| + static const char* kRangeOutOfOrder = "Range out of order in character class";
|
|
|
| ASSERT_EQ(current(), '[');
|
| Advance();
|
| @@ -3841,6 +3842,9 @@ RegExpTree* RegExpParser::ParseCharacterClass(bool* ok) {
|
| if (next.is_character_class()) {
|
| return ReportError(CStrVector(kIllegal), CHECK_OK);
|
| }
|
| + if (first.from() > next.to()) {
|
| + ReportError(CStrVector(kRangeOutOfOrder), CHECK_OK);
|
| + }
|
| ranges->Add(CharacterRange::Range(first.from(), next.to()));
|
| } else {
|
| ranges->Add(first);
|
|
|