summaryrefslogtreecommitdiff
path: root/json-glib/json-parser.c
diff options
context:
space:
mode:
Diffstat (limited to 'json-glib/json-parser.c')
-rw-r--r--json-glib/json-parser.c44
1 files changed, 24 insertions, 20 deletions
diff --git a/json-glib/json-parser.c b/json-glib/json-parser.c
index fc011b9..18a3d34 100644
--- a/json-glib/json-parser.c
+++ b/json-glib/json-parser.c
@@ -37,6 +37,7 @@
#include "json-types-private.h"
+#include "json-debug.h"
#include "json-marshal.h"
#include "json-parser.h"
#include "json-scanner.h"
@@ -457,7 +458,9 @@ json_parse_array (JsonParser *parser,
token = json_scanner_get_next_token (scanner);
if (token == G_TOKEN_RIGHT_BRACE)
- break;
+ {
+ break;
+ }
if (token == G_TOKEN_COMMA)
{
@@ -503,7 +506,9 @@ json_parse_array (JsonParser *parser,
token = json_scanner_get_next_token (scanner);
if (token == G_TOKEN_RIGHT_BRACE)
- break;
+ {
+ break;
+ }
if (token == G_TOKEN_COMMA)
{
@@ -536,8 +541,6 @@ json_parse_array (JsonParser *parser,
json_array_get_length (array));
token = json_scanner_get_next_token (scanner);
- if (token == G_TOKEN_RIGHT_BRACE)
- break;
if (token == G_TOKEN_COMMA)
{
@@ -548,11 +551,12 @@ json_parse_array (JsonParser *parser,
json_array_unref (array);
return G_TOKEN_SYMBOL;
}
-
- continue;
}
-
- return G_TOKEN_RIGHT_BRACE;
+ else if (token != G_TOKEN_RIGHT_BRACE)
+ {
+ json_array_unref (array);
+ return G_TOKEN_RIGHT_BRACE;
+ }
}
json_node_take_array (priv->current_node, array);
@@ -615,6 +619,7 @@ json_parse_object (JsonParser *parser,
return G_TOKEN_STRING;
}
+ /* nested object */
if (token == G_TOKEN_LEFT_CURLY)
{
JsonNode *old_node = priv->current_node;
@@ -668,7 +673,8 @@ json_parse_object (JsonParser *parser,
return G_TOKEN_RIGHT_CURLY;
}
-
+
+ /* nested array */
if (token == G_TOKEN_LEFT_BRACE)
{
JsonNode *old_node = priv->current_node;
@@ -699,7 +705,7 @@ json_parse_object (JsonParser *parser,
g_free (name);
token = json_scanner_get_next_token (scanner);
- if (token == G_TOKEN_RIGHT_BRACE)
+ if (token == G_TOKEN_RIGHT_CURLY)
break;
if (token == G_TOKEN_COMMA)
@@ -736,29 +742,27 @@ json_parse_object (JsonParser *parser,
object,
name);
- g_free (name);
-
token = json_scanner_get_next_token (scanner);
- if (token == G_TOKEN_RIGHT_CURLY)
- break;
-
if (token == G_TOKEN_COMMA)
{
token = json_scanner_get_next_token (scanner);
if (token == G_TOKEN_RIGHT_CURLY)
{
+ g_free (name);
json_object_unref (object);
return G_TOKEN_STRING;
}
-
- continue;
+ }
+ else if (token != G_TOKEN_RIGHT_CURLY)
+ {
+ g_free (name);
+ json_object_unref (object);
+ return G_TOKEN_RIGHT_CURLY;
}
- json_object_unref (object);
-
- return G_TOKEN_RIGHT_CURLY;
+ g_free (name);
}
json_node_take_object (priv->current_node, object);