aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/eval/typval.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/nvim/eval/typval.c b/src/nvim/eval/typval.c
index 576948f052..d5db15afcc 100644
--- a/src/nvim/eval/typval.c
+++ b/src/nvim/eval/typval.c
@@ -651,6 +651,7 @@ int tv_list_flatten(list_T *list, long maxdepth)
FUNC_ATTR_WARN_UNUSED_RESULT
{
listitem_T *item;
+ listitem_T *to_free;
int n;
if (maxdepth == 0) {
return OK;
@@ -668,12 +669,15 @@ int tv_list_flatten(list_T *list, long maxdepth)
tv_list_drop_items(list, item, item);
tv_list_extend(list, item->li_tv.vval.v_list, next);
+ tv_clear(&item->li_tv);
+ to_free = item;
if (item->li_prev == NULL) {
item = list->lv_first;
} else {
item = item->li_prev->li_next;
}
+ xfree(to_free);
if (++n >= maxdepth) {
n = 0;