From 9885b30c0ef4c40117851cf54c9c7e1ee2c1f3a3 Mon Sep 17 00:00:00 2001 From: Eric Haszlakiewicz Date: Sat, 31 Mar 2012 12:52:59 -0500 Subject: [PATCH] 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/) --- json_tokener.c | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) 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; } -- 2.50.1