comparison src/vim9execute.c @ 26445:568f93dcdc62 v8.2.3753

patch 8.2.3753: Vim9: function unreferenced while called is never deleted Commit: https://github.com/vim/vim/commit/2336c376d5796446d44622b0dfa8fd3fd1a5d22b Author: Bram Moolenaar <Bram@vim.org> Date: Mon Dec 6 15:06:54 2021 +0000 patch 8.2.3753: Vim9: function unreferenced while called is never deleted Problem: Vim9: function unreferenced while called is never deleted. Solution: Delete a function when no longer referenced.
author Bram Moolenaar <Bram@vim.org>
date Mon, 06 Dec 2021 16:15:03 +0100
parents 42471d3ac079
children ff0310e6f889
comparison
equal deleted inserted replaced
26444:aee00d57234d 26445:568f93dcdc62
4986 } 4986 }
4987 4987
4988 estack_pop(); 4988 estack_pop();
4989 current_sctx = save_current_sctx; 4989 current_sctx = save_current_sctx;
4990 4990
4991 // TODO: when is it safe to delete the function if it is no longer used? 4991 if (--ufunc->uf_calls <= 0 && ufunc->uf_refcount <= 0)
4992 --ufunc->uf_calls; 4992 // Function was unreferenced while being used, free it now.
4993 func_clear_free(ufunc, FALSE);
4993 4994
4994 if (*msg_list != NULL && saved_msg_list != NULL) 4995 if (*msg_list != NULL && saved_msg_list != NULL)
4995 { 4996 {
4996 msglist_T **plist = saved_msg_list; 4997 msglist_T **plist = saved_msg_list;
4997 4998