Mercurial > vim
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 |