Print correct error message on premature end of array
authorPetri Lehtinen <petri@digip.org>
Sun, 21 Jun 2009 13:04:43 +0000 (16:04 +0300)
committerPetri Lehtinen <petri@digip.org>
Tue, 30 Jun 2009 10:55:20 +0000 (13:55 +0300)
src/load.c

index 5f49fbc..9f8d22f 100644 (file)
@@ -359,25 +359,27 @@ static json_t *json_parse_array(json_lex *lex, json_error_t *error)
         return NULL;
 
     json_lex_scan(lex);
-    if(lex->token != ']') {
-        while(1) {
-            json_t *elem = json_parse(lex, error);
-            if(!elem)
-                goto error;
-
-            if(json_array_append(array, elem)) {
-                json_decref(elem);
-                goto error;
-            }
-            json_decref(elem);
+    if(lex->token == ']')
+        return array;
 
-            if(lex->token != ',')
-                break;
+    while(lex->token) {
+        json_t *elem = json_parse(lex, error);
+        if(!elem)
+            goto error;
 
-            json_lex_scan(lex);
+        if(json_array_append(array, elem)) {
+            json_decref(elem);
+            goto error;
         }
+        json_decref(elem);
+
+        if(lex->token != ',')
+            break;
+
+        json_lex_scan(lex);
     }
 
+
     if(lex->token != ']') {
         json_set_error(error, lex, "']' expected");
         goto error;