Mercurial > vim
diff src/userfunc.c @ 34769:d4fb6ea26ae4 v9.1.0261
patch 9.1.0261: Vim9: protected class and funcrefs accessible outside the class
Commit: https://github.com/vim/vim/commit/3e33650b3a9939f6b942c1d1eccdb261ea17a647
Author: Yegappan Lakshmanan <yegappan@yahoo.com>
Date: Thu Apr 4 19:35:59 2024 +0200
patch 9.1.0261: Vim9: protected class and funcrefs accessible outside the class
Problem: Vim9: protected class and funcrefs accessible outside the class
(Aliaksei Budavei)
Solution: Check if class and object funcrefs are protected
(Yegappan)
closes: #14407
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Thu, 04 Apr 2024 19:45:10 +0200 |
parents | 7de5ae6a0518 |
children | af48c532bd88 |
line wrap: on
line diff
--- a/src/userfunc.c +++ b/src/userfunc.c @@ -570,10 +570,16 @@ parse_argument_types( fp->uf_arg_types[i] = type; if (i < fp->uf_args.ga_len && (type->tt_type == VAR_FUNC - || type->tt_type == VAR_PARTIAL) - && var_wrong_func_name( - ((char_u **)fp->uf_args.ga_data)[i], TRUE)) - return FAIL; + || type->tt_type == VAR_PARTIAL)) + { + char_u *name = ((char_u **)fp->uf_args.ga_data)[i]; + if (obj_members != NULL && *name == '_') + // protected object method + name++; + + if (var_wrong_func_name(name, TRUE)) + return FAIL; + } } } }