]> granicus.if.org Git - json-c/commitdiff
Perform better error checking in json_tokener_parse_verbose and rewrite json_tokener_...
authorEric Haszlakiewicz <erh+git@nimenees.com>
Sat, 31 Mar 2012 17:52:59 +0000 (12:52 -0500)
committerEric Haszlakiewicz <erh+git@nimenees.com>
Sat, 31 Mar 2012 17:52:59 +0000 (12:52 -0500)
Fix a typo in the string represenations of the json_tokener_error_depth error (s/to deep/too deep/)

json_tokener.c

index 6d973ecfd9d065b48d811d9fce504a4a149642e0..04950b5081360b4ec135d29926b35b0f324dcf58 100644 (file)
@@ -47,7 +47,7 @@ static const char* json_false_str = "false";
 const char* json_tokener_errors[] = {
   "success",
   "continue",
-  "nesting to deep",
+  "nesting too deep",
   "unexpected end of data",
   "unexpected character",
   "null expected",
@@ -122,17 +122,10 @@ void json_tokener_reset(struct json_tokener *tok)
 
 struct json_object* json_tokener_parse(const char *str)
 {
-  struct json_tokener* tok;
-  struct json_object* obj;
-
-  tok = json_tokener_new();
-  if (!tok)
-    return NULL;
-  obj = json_tokener_parse_ex(tok, str, -1);
-  if(tok->err != json_tokener_success)
-    obj = NULL;
-  json_tokener_free(tok);
-  return obj;
+    enum json_tokener_error jerr_ignored;
+    struct json_object* obj;
+    obj = json_tokener_parse_verbose(str, &jerr_ignored);
+    return obj;
 }
 
 struct json_object* json_tokener_parse_verbose(const char *str, enum json_tokener_error *error)
@@ -141,9 +134,13 @@ struct json_object* json_tokener_parse_verbose(const char *str, enum json_tokene
     struct json_object* obj;
 
     tok = json_tokener_new();
+    if (!tok)
+      return NULL;
     obj = json_tokener_parse_ex(tok, str, -1);
     *error = tok->err;
     if(tok->err != json_tokener_success) {
+               if (obj != NULL)
+                       json_object_put(obj);
         obj = NULL;
     }