From d809fa60c5d0bb91d1c444dfa01b9ab5cb22112e Mon Sep 17 00:00:00 2001 From: Eric Haszlakiewicz Date: Sat, 31 Mar 2012 22:53:43 -0500 Subject: [PATCH] Fix a bug in json_tokener_parse_ex when re-using the same tokener to parse multiple objects. Now, json_tokener_reset() does not need to be called after a valid object is parsed. --- json_tokener.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/json_tokener.c b/json_tokener.c index 04950b5..1dc06e4 100644 --- a/json_tokener.c +++ b/json_tokener.c @@ -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; -- 2.7.4