From 45cf6e910c6d162775ca9d470fac4b6db844001f Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sun, 30 Apr 2017 20:25:19 +0200 Subject: patch 8.0.0593: duplication of code for adding a list or dict return value Problem: Duplication of code for adding a list or dict return value. Solution: Add rettv_dict_set() and rettv_list_set(). (Yegappan Lakshmanan) --- src/list.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) (limited to 'src/list.c') diff --git a/src/list.c b/src/list.c index 50d38ff87c..2fccbae764 100644 --- a/src/list.c +++ b/src/list.c @@ -97,13 +97,23 @@ rettv_list_alloc(typval_T *rettv) if (l == NULL) return FAIL; - rettv->vval.v_list = l; - rettv->v_type = VAR_LIST; rettv->v_lock = 0; - ++l->lv_refcount; + rettv_list_set(rettv, l); return OK; } +/* + * Set a list as the return value + */ + void +rettv_list_set(typval_T *rettv, list_T *l) +{ + rettv->v_type = VAR_LIST; + rettv->vval.v_list = l; + if (l != NULL) + ++l->lv_refcount; +} + /* * Unreference a list: decrement the reference count and free it when it * becomes zero. @@ -875,11 +885,7 @@ failret: *arg = skipwhite(*arg + 1); if (evaluate) - { - rettv->v_type = VAR_LIST; - rettv->vval.v_list = l; - ++l->lv_refcount; - } + rettv_list_set(rettv, l); return OK; } -- cgit v1.2.3