Skip to content

Commit 92d9025

Browse files
authored
fix Reader bug and add testcase (open-source-parsers#1122)
1 parent d6c4a8f commit 92d9025

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

src/lib_json/json_reader.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -467,7 +467,7 @@ bool Reader::readObject(Token& token) {
467467
Value numberName;
468468
if (!decodeNumber(tokenName, numberName))
469469
return recoverFromError(tokenObjectEnd);
470-
name = String(numberName.asCString());
470+
name = numberName.asString();
471471
} else {
472472
break;
473473
}

src/test_lib_json/main.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2648,6 +2648,10 @@ struct ReaderTest : JsonTest::TestCase {
26482648
new Json::Reader(Json::Features{}.strictMode()));
26492649
}
26502650

2651+
void setFeatures(Json::Features& features) {
2652+
reader = std::unique_ptr<Json::Reader>(new Json::Reader(features));
2653+
}
2654+
26512655
void checkStructuredErrors(
26522656
const std::vector<Json::Reader::StructuredError>& actual,
26532657
const std::vector<Json::Reader::StructuredError>& expected) {
@@ -2851,6 +2855,13 @@ JSONTEST_FIXTURE_LOCAL(ReaderTest, pushErrorTest) {
28512855
"See Line 1, Column 14 for detail.\n");
28522856
}
28532857

2858+
JSONTEST_FIXTURE_LOCAL(ReaderTest, allowNumericKeysTest) {
2859+
Json::Features features;
2860+
features.allowNumericKeys_ = true;
2861+
setFeatures(features);
2862+
checkParse(R"({ 123 : "abc" })");
2863+
}
2864+
28542865
struct CharReaderTest : JsonTest::TestCase {};
28552866

28562867
JSONTEST_FIXTURE_LOCAL(CharReaderTest, parseWithNoErrors) {

0 commit comments

Comments
 (0)