From: Bram Moolenaar Date: Tue, 14 Mar 2017 21:17:14 +0000 (+0100) Subject: patch 8.0.0458: potential crash if adding list or dict to dict fails X-Git-Tag: v8.0.0458 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=42f45b850df93b806ef44f3025aecedfffb9ae01;p=vim patch 8.0.0458: potential crash if adding list or dict to dict fails Problem: Potential crash if adding list or dict to dict fails. Solution: Make sure the reference count is correct. (Nikolai Pavlov, closes #1555) --- diff --git a/src/dict.c b/src/dict.c index 70743059e..a26419b6d 100644 --- a/src/dict.c +++ b/src/dict.c @@ -356,12 +356,12 @@ dict_add_list(dict_T *d, char *key, list_T *list) item->di_tv.v_lock = 0; item->di_tv.v_type = VAR_LIST; item->di_tv.vval.v_list = list; + ++list->lv_refcount; if (dict_add(d, item) == FAIL) { dictitem_free(item); return FAIL; } - ++list->lv_refcount; return OK; } @@ -380,12 +380,12 @@ dict_add_dict(dict_T *d, char *key, dict_T *dict) item->di_tv.v_lock = 0; item->di_tv.v_type = VAR_DICT; item->di_tv.vval.v_dict = dict; + ++dict->dv_refcount; if (dict_add(d, item) == FAIL) { dictitem_free(item); return FAIL; } - ++dict->dv_refcount; return OK; } diff --git a/src/version.c b/src/version.c index 81ef80fb0..2e211984f 100644 --- a/src/version.c +++ b/src/version.c @@ -764,6 +764,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 458, /**/ 457, /**/