Bugfix: add missing transition from finish state.

This commit is contained in:
thebusytypist 2014-07-07 21:57:23 +08:00
parent 7acb0c181e
commit 7d33b01515
2 changed files with 15 additions and 0 deletions

View File

@ -947,6 +947,11 @@ private:
case IterativeParsingArrayContentState: case IterativeParsingArrayContentState:
r = TransitFromArrayStates<parseFlags>(state, is, handler); r = TransitFromArrayStates<parseFlags>(state, is, handler);
break; break;
case IterativeParsingFinishState:
// Any token appears after finish state leads to error state.
r = IterativeParsingErrorState;
RAPIDJSON_PARSE_ERROR_NORETURN(kParseErrorDocumentRootNotSingular, is.Tell());
break;
} }
return r; return r;

View File

@ -900,6 +900,16 @@ TEST(Reader, IterativeParsing_ElementCounting) {
EXPECT_EQ(1, handler.ElementCount); EXPECT_EQ(1, handler.ElementCount);
} }
TEST(Reader, IterativeParsing_AfterFinishState) {
StringStream json("{}, {}");
Reader reader;
BaseReaderHandler<> handler;
reader.IterativeParse<kParseIterativeFlag>(json, handler);
EXPECT_TRUE(reader.HasParseError());
}
#ifdef __GNUC__ #ifdef __GNUC__
#pragma GCC diagnostic pop #pragma GCC diagnostic pop
#endif #endif