0
0
mirror of https://github.com/vim/vim.git synced 2025-09-24 03:44:06 -04:00

patch 8.2.0697: Vim9: memory leak when using nested function

Problem:    Vim9: memory leak when using nested function.
Solution:   Unreference function when deleting instructions. Adjust reference
            count for local variables.
This commit is contained in:
Bram Moolenaar
2020-05-05 19:46:20 +02:00
parent 0e65d3de0a
commit 221fcc741a
3 changed files with 30 additions and 4 deletions

View File

@@ -6629,6 +6629,14 @@ delete_instr(isn_T *isn)
vim_free(isn->isn_arg.ufunc.cuf_name);
break;
case ISN_FUNCREF:
{
dfunc_T *dfunc = ((dfunc_T *)def_functions.ga_data)
+ isn->isn_arg.funcref.fr_func;
func_ptr_unref(dfunc->df_ufunc);
}
break;
case ISN_2BOOL:
case ISN_2STRING:
case ISN_ADDBLOB:
@@ -6657,7 +6665,6 @@ delete_instr(isn_T *isn)
case ISN_EXECCONCAT:
case ISN_EXECUTE:
case ISN_FOR:
case ISN_FUNCREF:
case ISN_INDEX:
case ISN_JUMP:
case ISN_LOAD: