diff --git a/include/rapidjson/internal/regex.h b/include/rapidjson/internal/regex.h index 377f86c..16e3559 100644 --- a/include/rapidjson/internal/regex.h +++ b/include/rapidjson/internal/regex.h @@ -395,8 +395,7 @@ private: } return false; - default: - RAPIDJSON_ASSERT(op == kOneOrMore); + case kOneOrMore: if (operandStack.GetSize() >= sizeof(Frag)) { Frag e = *operandStack.template Pop(1); SizeType s = NewState(kRegexInvalidState, e.start, 0); @@ -405,6 +404,10 @@ private: return true; } return false; + + default: + // syntax error (e.g. unclosed kLeftParenthesis) + return false; } } diff --git a/test/unittest/regextest.cpp b/test/unittest/regextest.cpp index cdd3630..cf89973 100644 --- a/test/unittest/regextest.cpp +++ b/test/unittest/regextest.cpp @@ -595,6 +595,7 @@ TEST(Regex, Invalid) { TEST_INVALID(""); TEST_INVALID("a|"); TEST_INVALID("()"); + TEST_INVALID("("); TEST_INVALID(")"); TEST_INVALID("(a))"); TEST_INVALID("(a|)");