summaryrefslogtreecommitdiff
path: root/src/eval.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2016-08-01 22:49:22 +0200
committerBram Moolenaar <Bram@vim.org>2016-08-01 22:49:22 +0200
commitbc7ce675b2d1c9fb58c067eff3edd59abc30aba4 (patch)
treedf3fc4f3d1467680240f95d5cf51d65eae88cb86 /src/eval.c
parent8dd3a43d75550e9b5736066124c97697564f769e (diff)
downloadvim-git-bc7ce675b2d1c9fb58c067eff3edd59abc30aba4.tar.gz
patch 7.4.2143v7.4.2143
Problem: A funccal is garbage collected while it can still be used. Solution: Set copyID in all referenced functions. Do not list lambda functions with ":function".
Diffstat (limited to 'src/eval.c')
-rw-r--r--src/eval.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/eval.c b/src/eval.c
index 1adbabc08..45b8f07c3 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -5304,6 +5304,9 @@ garbage_collect(int testing)
/* function-local variables */
abort = abort || set_ref_in_call_stack(copyID);
+ /* named functions (matters for closures) */
+ abort = abort || set_ref_in_functions(copyID);
+
/* function call arguments, if v:testing is set. */
abort = abort || set_ref_in_func_args(copyID);