0
0
mirror of https://github.com/vim/vim.git synced 2025-09-25 03:54:15 -04:00

patch 8.2.4548: script-local function is deleted when used in a funcref

Problem:    Script-local function is deleted when used in a funcref.
Solution:   Do not consider a function starting with "<SNR>" reference
            counted. (closes #9916, closes #9820)
This commit is contained in:
Bram Moolenaar
2022-03-11 18:54:17 +00:00
parent f52fac2ed9
commit fb43cfc2c6
3 changed files with 24 additions and 3 deletions

View File

@@ -2215,8 +2215,9 @@ numbered_function(char_u *name)
/*
* There are two kinds of function names:
* 1. ordinary names, function defined with :function or :def
* 2. numbered functions and lambdas
* 1. ordinary names, function defined with :function or :def;
* can start with "<SNR>123_" literally or with K_SPECIAL.
* 2. Numbered functions and lambdas: "<lambda>123"
* For the first we only count the name stored in func_hashtab as a reference,
* using function() does not count as a reference, because the function is
* looked up by name.
@@ -2224,7 +2225,7 @@ numbered_function(char_u *name)
int
func_name_refcount(char_u *name)
{
return numbered_function(name) || *name == '<';
return numbered_function(name) || (name[0] == '<' && name[1] == 'l');
}
/*