mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
vim-patch:9.2.1731: Vim9: cannot use += to append to empty NULL list
Problem: Vim9: cannot use += to append to empty NULL list.
Solution: Copy the list instead of extending it. (closes vim/vim#6998)
81ed496048
Co-authored-by: Bram Moolenaar <Bram@vim.org>
This commit is contained in:
parent
403de7ffc7
commit
43c137c3d8
@ -1519,7 +1519,14 @@ static char *get_lval_subscript(lval_T *lp, char *p, char *name, typval_T *rettv
|
||||
key = (char *)tv_get_string(&var1); // is number or string
|
||||
}
|
||||
lp->ll_list = NULL;
|
||||
|
||||
// a NULL dict is equivalent with an empty dict
|
||||
if (lp->ll_tv->vval.v_dict == NULL) {
|
||||
lp->ll_tv->vval.v_dict = tv_dict_alloc();
|
||||
lp->ll_tv->vval.v_dict->dv_refcount++;
|
||||
}
|
||||
lp->ll_dict = lp->ll_tv->vval.v_dict;
|
||||
|
||||
lp->ll_di = tv_dict_find(lp->ll_dict, key, len);
|
||||
|
||||
// When assigning to a scope dictionary check that a function and
|
||||
|
@ -59,8 +59,13 @@ int eexe_mod_op(typval_T *const tv1, const typval_T *const tv2, const char *cons
|
||||
break;
|
||||
}
|
||||
// List += List
|
||||
if (tv1->vval.v_list != NULL && tv2->vval.v_list != NULL) {
|
||||
tv_list_extend(tv1->vval.v_list, tv2->vval.v_list, NULL);
|
||||
if (tv2->vval.v_list != NULL) {
|
||||
if (tv1->vval.v_list == NULL) {
|
||||
tv1->vval.v_list = tv2->vval.v_list;
|
||||
tv_list_ref(tv1->vval.v_list);
|
||||
} else {
|
||||
tv_list_extend(tv1->vval.v_list, tv2->vval.v_list, NULL);
|
||||
}
|
||||
}
|
||||
return OK;
|
||||
case VAR_NUMBER:
|
||||
|
Loading…
Reference in New Issue
Block a user