changeset 20770:b366a0fe8296 v8.2.0937

patch 8.2.0937: asan failure in the flatten() test Commit: https://github.com/vim/vim/commit/dcf59c37d0e1517439c4c0c4a6a5ca09c90157ad Author: Bram Moolenaar <Bram@vim.org> Date: Tue Jun 9 17:30:04 2020 +0200 patch 8.2.0937: asan failure in the flatten() test Problem: Asan failure in the flatten() test. Solution: Free the flattened list.
author Bram Moolenaar <Bram@vim.org>
date Tue, 09 Jun 2020 17:45:03 +0200
parents 4abe06b07138
children 8aa004f7e48f
files src/list.c src/version.c
diffstat 2 files changed, 6 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/list.c
+++ b/src/list.c
@@ -739,6 +739,7 @@ list_insert(list_T *l, listitem_T *ni, l
 list_flatten(list_T *list, long maxdepth)
 {
     listitem_T	*item;
+    listitem_T	*tofree;
     int		n;
 
     if (maxdepth == 0)
@@ -760,11 +761,14 @@ list_flatten(list_T *list, long maxdepth
 	    vimlist_remove(list, item, item);
 	    if (list_extend(list, item->li_tv.vval.v_list, next) == FAIL)
 		return FAIL;
+	    clear_tv(&item->li_tv);
+	    tofree = item;
 
 	    if (item->li_prev == NULL)
 		item = list->lv_first;
 	    else
 		item = item->li_prev->li_next;
+	    list_free_item(list, tofree);
 
 	    if (++n >= maxdepth)
 	    {
--- a/src/version.c
+++ b/src/version.c
@@ -755,6 +755,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    937,
+/**/
     936,
 /**/
     935,