vim-patch:8.2.3822: leaking memory in map() and filter(), no string in Vim9

Problem:    Leaking memory in map() and filter(), cannot use a string argument
            in Vim9 script.
Solution:   Fix the leak, adjust the argument check, also run the tests as
            Vim9 script. (Yegappan Lakshmanan, closes vim/vim#9354)

2d877599ee

Co-authored-by: Bram Moolenaar <Bram@vim.org>
This commit is contained in:
zeertzjq
2023-08-17 12:59:16 +08:00
parent d9e7dad139
commit faef577e90
2 changed files with 76 additions and 54 deletions

View File

@@ -5042,7 +5042,7 @@ static void filter_map(typval_T *argvars, typval_T *rettv, filtermap_T filtermap
: N_("filter() argument")));
// map() and filter() return the first argument, also on failure.
if (filtermap != FILTERMAP_MAPNEW) {
if (filtermap != FILTERMAP_MAPNEW && argvars[0].v_type != VAR_STRING) {
tv_copy(&argvars[0], rettv);
}