Mercurial > vim
diff src/vim9compile.c @ 27800:6e5d378919c4 v8.2.4426
patch 8.2.4426: map() function on string and blob does not check types
Commit: https://github.com/vim/vim/commit/c1e6c7bafec1115b690c745a28e1a6338750b137
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Feb 20 18:26:46 2022 +0000
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()".
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 20 Feb 2022 19:30:02 +0100 |
parents | d754ac2f5ac5 |
children | 532a0c5de1ec |
line wrap: on
line diff
--- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -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);