1
0
forked from aniani/vim

patch 8.2.4629: flattennew() makes a deep copy unnecessarily

Problem:    flattennew() makes a deep copy unnecessarily.
Solution:   Use a shallow copy. (issue #10012)
This commit is contained in:
Bram Moolenaar
2022-03-26 10:50:11 +00:00
parent 5e877baf87
commit c6c1ec4da5
2 changed files with 4 additions and 4 deletions

View File

@@ -925,7 +925,6 @@ list_assign_range(
list_flatten(list_T *list, listitem_T *first, long maxitems, long maxdepth) list_flatten(list_T *list, listitem_T *first, long maxitems, long maxdepth)
{ {
listitem_T *item; listitem_T *item;
listitem_T *tofree;
int done = 0; int done = 0;
if (maxdepth == 0) if (maxdepth == 0)
@@ -955,13 +954,12 @@ list_flatten(list_T *list, listitem_T *first, long maxitems, long maxdepth)
return; return;
} }
clear_tv(&item->li_tv); clear_tv(&item->li_tv);
tofree = item;
if (maxdepth > 0) if (maxdepth > 0)
list_flatten(list, item->li_prev == NULL list_flatten(list, item->li_prev == NULL
? list->lv_first : item->li_prev->li_next, ? list->lv_first : item->li_prev->li_next,
itemlist->lv_len, maxdepth - 1); itemlist->lv_len, maxdepth - 1);
list_free_item(list, tofree); list_free_item(list, item);
} }
++done; ++done;
@@ -1012,7 +1010,7 @@ flatten_common(typval_T *argvars, typval_T *rettv, int make_copy)
if (make_copy) if (make_copy)
{ {
l = list_copy(l, TRUE, TRUE, get_copyID()); l = list_copy(l, FALSE, TRUE, get_copyID());
rettv->vval.v_list = l; rettv->vval.v_list = l;
if (l == NULL) if (l == NULL)
return; return;

View File

@@ -750,6 +750,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
4629,
/**/ /**/
4628, 4628,
/**/ /**/