Allow trailing comma in arrays if dropped null placeholders are not allowed
diff --git a/src/lib_json/json_reader.cpp b/src/lib_json/json_reader.cpp
index e539793..aa788cd 100644
--- a/src/lib_json/json_reader.cpp
+++ b/src/lib_json/json_reader.cpp
@@ -503,15 +503,16 @@
Value init(arrayValue);
currentValue().swapPayload(init);
currentValue().setOffsetStart(token.start_ - begin_);
- skipSpaces();
- if (current_ != end_ && *current_ == ']') // empty array
- {
- Token endArray;
- readToken(endArray);
- return true;
- }
int index = 0;
for (;;) {
+ skipSpaces();
+ if (current_ != end_ && *current_ == ']' && (index == 0 || (features_.allowTrailingCommas_ && !features_.allowDroppedNullPlaceholders_))) // empty array or trailing comma
+ {
+ Token endArray;
+ readToken(endArray);
+ return true;
+ }
+
Value& value = currentValue()[index++];
nodes_.push(&value);
bool ok = readValue();
@@ -1493,15 +1494,15 @@
Value init(arrayValue);
currentValue().swapPayload(init);
currentValue().setOffsetStart(token.start_ - begin_);
- skipSpaces();
- if (current_ != end_ && *current_ == ']') // empty array
- {
- Token endArray;
- readToken(endArray);
- return true;
- }
int index = 0;
for (;;) {
+ skipSpaces();
+ if (current_ != end_ && *current_ == ']' && (index == 0 || (features_.allowTrailingCommas_ && !features_.allowDroppedNullPlaceholders_))) // empty array or trailing comma
+ {
+ Token endArray;
+ readToken(endArray);
+ return true;
+ }
Value& value = currentValue()[index++];
nodes_.push(&value);
bool ok = readValue();
diff --git a/test/data/fail_test_array_02.json b/test/data/fail_test_array_02.json
new file mode 100644
index 0000000..222a1b4
--- /dev/null
+++ b/test/data/fail_test_array_02.json
@@ -0,0 +1 @@
+[1,,]
diff --git a/test/data/test_array_08.expected b/test/data/test_array_08.expected
new file mode 100644
index 0000000..ef1f262
--- /dev/null
+++ b/test/data/test_array_08.expected
@@ -0,0 +1,2 @@
+.=[]
+.[0]=1
diff --git a/test/data/test_array_08.json b/test/data/test_array_08.json
new file mode 100644
index 0000000..e8b1a17
--- /dev/null
+++ b/test/data/test_array_08.json
@@ -0,0 +1 @@
+[1,]