forked from aniani/vim
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)
This commit is contained in:
22
src/list.c
22
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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user