Mercurial > vim
comparison 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 |
comparison
equal
deleted
inserted
replaced
7715:a1465a06a3e4 | 7716:9d79943791ea |
---|---|
316 { | 316 { |
317 clear_tv(&item); | 317 clear_tv(&item); |
318 goto fail; | 318 goto fail; |
319 } | 319 } |
320 di->di_tv = item; | 320 di->di_tv = item; |
321 dict_add(res->vval.v_dict, di); | 321 if (dict_add(res->vval.v_dict, di) == FAIL) |
322 dictitem_free(di); | |
322 | 323 |
323 json_skip_white(reader); | 324 json_skip_white(reader); |
324 p = reader->js_buf + reader->js_used; | 325 p = reader->js_buf + reader->js_used; |
325 if (*p == ',') | 326 if (*p == ',') |
326 ++reader->js_used; | 327 ++reader->js_used; |
396 reader->js_used = (int)(p - reader->js_buf); | 397 reader->js_used = (int)(p - reader->js_buf); |
397 if (*p == '"') | 398 if (*p == '"') |
398 { | 399 { |
399 ++reader->js_used; | 400 ++reader->js_used; |
400 res->v_type = VAR_STRING; | 401 res->v_type = VAR_STRING; |
401 res->vval.v_string = vim_strsave(ga.ga_data); | 402 if (ga.ga_data == NULL) |
403 res->vval.v_string = NULL; | |
404 else | |
405 res->vval.v_string = vim_strsave(ga.ga_data); | |
402 } | 406 } |
403 else | 407 else |
404 { | 408 { |
405 res->v_type = VAR_SPECIAL; | 409 res->v_type = VAR_SPECIAL; |
406 res->vval.v_number = VVAL_NONE; | 410 res->vval.v_number = VVAL_NONE; |