From: Eric Haszlakiewicz Date: Sat, 31 Mar 2012 17:52:59 +0000 (-0500) Subject: Perform better error checking in json_tokener_parse_verbose and rewrite json_tokener_... X-Git-Tag: json-c-0.10-20120530~32 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3620cba6d0fa109d9a27e1a1158438fcbff43760;p=json-c Perform better error checking in json_tokener_parse_verbose and rewrite json_tokener_parse to use that instead of json_tokener_parse_ex. Fix a typo in the string represenations of the json_tokener_error_depth error (s/to deep/too deep/) --- diff --git a/json_tokener.c b/json_tokener.c index 6d973ec..04950b5 100644 --- a/json_tokener.c +++ b/json_tokener.c @@ -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; }