diff options
author | Corey Farrell <git@cfware.com> | 2017-11-14 23:46:08 -0500 |
---|---|---|
committer | Corey Farrell <git@cfware.com> | 2017-11-14 23:52:49 -0500 |
commit | bd91753e913194f008d1854d44834f86616da583 (patch) | |
tree | 931e0a5b820bcdeb4eac3fb566584e8da3336584 /src/load.c | |
parent | 009ffa3fc8a4fbb5f79bdc764910149d0ea24b27 (diff) | |
download | jansson-bd91753e913194f008d1854d44834f86616da583.zip jansson-bd91753e913194f008d1854d44834f86616da583.tar.gz jansson-bd91753e913194f008d1854d44834f86616da583.tar.bz2 |
Remove extra reference actions in parsers.
Make parse_object use json_object_set_new_nocheck and make parse_array
use json_array_append_new, remove json_decref from error and success
paths.
Fixes #376
Diffstat (limited to 'src/load.c')
-rw-r--r-- | src/load.c | 8 |
1 files changed, 2 insertions, 6 deletions
@@ -738,13 +738,11 @@ static json_t *parse_object(lex_t *lex, size_t flags, json_error_t *error) goto error; } - if(json_object_set_nocheck(object, key, value)) { + if(json_object_set_new_nocheck(object, key, value)) { jsonp_free(key); - json_decref(value); goto error; } - json_decref(value); jsonp_free(key); lex_scan(lex, error); @@ -781,11 +779,9 @@ static json_t *parse_array(lex_t *lex, size_t flags, json_error_t *error) if(!elem) goto error; - if(json_array_append(array, elem)) { - json_decref(elem); + if(json_array_append_new(array, elem)) { goto error; } - json_decref(elem); lex_scan(lex, error); if(lex->token != ',') |