diff src/json.c @ 7716:9d79943791ea v7.4.1156

commit https://github.com/vim/vim/commit/2dedb45260604911035cff2364aca90a69156ed9 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Jan 23 21:38:51 2016 +0100 patch 7.4.1156 Problem: Coverity warns for NULL pointer and ignoring return value. Solution: Check for NULL pointer. When dict_add() returns FAIL free the item.
author Christian Brabandt <cb@256bit.org>
date Sat, 23 Jan 2016 21:45:04 +0100
parents bce3b5ddb393
children 87f3f9536ecf
line wrap: on
line diff
--- a/src/json.c
+++ b/src/json.c
@@ -318,7 +318,8 @@ json_decode_object(js_read_T *reader, ty
 	    goto fail;
 	}
 	di->di_tv = item;
-	dict_add(res->vval.v_dict, di);
+	if (dict_add(res->vval.v_dict, di) == FAIL)
+	    dictitem_free(di);
 
 	json_skip_white(reader);
 	p = reader->js_buf + reader->js_used;
@@ -398,7 +399,10 @@ json_decode_string(js_read_T *reader, ty
     {
 	++reader->js_used;
 	res->v_type = VAR_STRING;
-	res->vval.v_string = vim_strsave(ga.ga_data);
+	if (ga.ga_data == NULL)
+	    res->vval.v_string = NULL;
+	else
+	    res->vval.v_string = vim_strsave(ga.ga_data);
     }
     else
     {