0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

patch 8.2.4426: map() function on string and blob does not check types

Problem:    map() function on string and blob does not check argument types at
            compile time.
Solution:   Check string and blob argument types.  Support "0z1234->func()".
This commit is contained in:
Bram Moolenaar
2022-02-20 18:26:46 +00:00
parent eddd4fc4f6
commit c1e6c7bafe
5 changed files with 47 additions and 7 deletions

View File

@@ -2818,13 +2818,16 @@ compile_def_function(
/*
* COMMAND after range
* 'text'->func() should not be confused with 'a mark
* 0z1234->func() should not be confused with a zero line number
* "++nr" and "--nr" are eval commands
* in "$ENV->func()" the "$" is not a range
*/
cmd = ea.cmd;
if ((*cmd != '$' || starts_with_colon)
&& (starts_with_colon || !(*cmd == '\''
|| (cmd[0] != NUL && cmd[0] == cmd[1]
&& (starts_with_colon
|| !(*cmd == '\''
|| (cmd[0] == '0' && cmd[1] == 'z')
|| (cmd[0] != NUL && cmd[0] == cmd[1]
&& (*cmd == '+' || *cmd == '-')))))
{
ea.cmd = skip_range(ea.cmd, TRUE, NULL);