summaryrefslogtreecommitdiffstats
path: root/lldb/tools/debugserver/source/JSON.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/tools/debugserver/source/JSON.cpp')
-rw-r--r--lldb/tools/debugserver/source/JSON.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/lldb/tools/debugserver/source/JSON.cpp b/lldb/tools/debugserver/source/JSON.cpp
index 1b37767256d..12d96d4ed4d 100644
--- a/lldb/tools/debugserver/source/JSON.cpp
+++ b/lldb/tools/debugserver/source/JSON.cpp
@@ -516,13 +516,16 @@ JSONValue::SP JSONParser::ParseJSONArray() {
std::string value;
std::string key;
while (true) {
- JSONValue::SP value_sp = ParseJSONValue();
+ JSONParser::Token token = GetToken(value);
+ if (token == JSONParser::Token::ArrayEnd)
+ return JSONValue::SP(array_up.release());
+ JSONValue::SP value_sp = ParseJSONValue(value, token);
if (value_sp)
array_up->AppendObject(value_sp);
else
break;
- JSONParser::Token token = GetToken(value);
+ token = GetToken(value);
if (token == JSONParser::Token::Comma) {
continue;
} else if (token == JSONParser::Token::ArrayEnd) {
@@ -537,6 +540,11 @@ JSONValue::SP JSONParser::ParseJSONArray() {
JSONValue::SP JSONParser::ParseJSONValue() {
std::string value;
const JSONParser::Token token = GetToken(value);
+ return ParseJSONValue(value, token);
+}
+
+JSONValue::SP JSONParser::ParseJSONValue(const std::string &value,
+ const Token &token) {
switch (token) {
case JSONParser::Token::ObjectStart:
return ParseJSONObject();
OpenPOWER on IntegriCloud