]> granicus.if.org Git - json-c/commitdiff
Fix a bug in json_tokener_parse_ex when re-using the same tokener to parse multiple...
authorEric Haszlakiewicz <erh+git@nimenees.com>
Sun, 1 Apr 2012 03:53:43 +0000 (22:53 -0500)
committerKeith Derrick <keith.derrick@palm.com>
Mon, 2 Apr 2012 14:53:25 +0000 (07:53 -0700)
json_tokener.c

index 04950b5081360b4ec135d29926b35b0f324dcf58..1dc06e4a842e4f4871eff26b75615abd6a259607 100644 (file)
@@ -715,7 +715,17 @@ struct json_object* json_tokener_parse_ex(struct json_tokener *tok,
       tok->err = json_tokener_error_parse_eof;
   }
 
-  if(tok->err == json_tokener_success) return json_object_get(current);
+  if (tok->err == json_tokener_success) 
+  {
+    json_object *ret = json_object_get(current);
+       int ii;
+
+       /* Partially reset, so we parse additional objects on subsequent calls. */
+    for(ii = tok->depth; ii >= 0; ii--)
+      json_tokener_reset_level(tok, ii);
+    return ret;
+  }
+
   MC_DEBUG("json_tokener_parse_ex: error %s at offset %d\n",
           json_tokener_errors[tok->err], tok->char_offset);
   return NULL;