]> granicus.if.org Git - vim/commitdiff
patch 8.1.1186: readdir() allocates list twice v8.1.1186
authorBram Moolenaar <Bram@vim.org>
Fri, 19 Apr 2019 13:20:46 +0000 (15:20 +0200)
committerBram Moolenaar <Bram@vim.org>
Fri, 19 Apr 2019 13:20:46 +0000 (15:20 +0200)
Problem:    readdir() allocates list twice.
Solution:   Remove second allocation.  Also check for zero length.

src/evalfunc.c
src/version.c

index 76f1125a1db2370cd42e10d635b97e6e521689b6..7368ba284b908dcc1e7f44b88ed0e0d27f9373c3 100644 (file)
@@ -9324,10 +9324,8 @@ f_readdir(typval_T *argvars, typval_T *rettv)
     }
 #endif
 
-    rettv->vval.v_list = list_alloc();
-    if (!failed && rettv->vval.v_list != NULL)
+    if (!failed && rettv->vval.v_list != NULL && ga.ga_len > 0)
     {
-       ++rettv->vval.v_list->lv_refcount;
        sort_strings((char_u **)ga.ga_data, ga.ga_len);
        for (i = 0; i < ga.ga_len; i++)
        {
@@ -9335,10 +9333,7 @@ f_readdir(typval_T *argvars, typval_T *rettv)
            list_append_string(rettv->vval.v_list, p, -1);
        }
     }
-    for (i = 0; i < ga.ga_len; i++)
-       vim_free(((char_u **)ga.ga_data)[i]);
-
-    ga_clear(&ga);
+    ga_clear_strings(&ga);
 }
 
 /*
index b08b22c10dcde2db19abeab5c47020e56d326829..0b9a5dfa2e8ac8e29a42fa6b6035c0d7032bf669 100644 (file)
@@ -771,6 +771,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1186,
 /**/
     1185,
 /**/