summaryrefslogtreecommitdiff
path: root/src/vim9execute.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/vim9execute.c')
-rw-r--r--src/vim9execute.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/vim9execute.c b/src/vim9execute.c
index adfb9207c..f805dc0f1 100644
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -4988,8 +4988,9 @@ call_def_function(
estack_pop();
current_sctx = save_current_sctx;
- // TODO: when is it safe to delete the function if it is no longer used?
- --ufunc->uf_calls;
+ if (--ufunc->uf_calls <= 0 && ufunc->uf_refcount <= 0)
+ // Function was unreferenced while being used, free it now.
+ func_clear_free(ufunc, FALSE);
if (*msg_list != NULL && saved_msg_list != NULL)
{