forked from aniani/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 #9354)
This commit is contained in:
22
src/typval.c
22
src/typval.c
@@ -831,6 +831,28 @@ check_for_list_or_dict_or_blob_arg(typval_T *args, int idx)
|
||||
return OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* Give an error and return FAIL unless "args[idx]" is a list or dict or a
|
||||
* blob or a string.
|
||||
*/
|
||||
int
|
||||
check_for_list_or_dict_or_blob_or_string_arg(typval_T *args, int idx)
|
||||
{
|
||||
if (args[idx].v_type != VAR_LIST
|
||||
&& args[idx].v_type != VAR_DICT
|
||||
&& args[idx].v_type != VAR_BLOB
|
||||
&& args[idx].v_type != VAR_STRING)
|
||||
{
|
||||
if (idx >= 0)
|
||||
semsg(_(e_list_dict_blob_or_string_required_for_argument_nr),
|
||||
idx + 1);
|
||||
else
|
||||
emsg(_(e_listreq));
|
||||
return FAIL;
|
||||
}
|
||||
return OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* Give an error and return FAIL unless "args[idx]" is an optional buffer
|
||||
* number or a dict.
|
||||
|
Reference in New Issue
Block a user