diff options
author | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2020-09-27 00:02:47 -0400 |
---|---|---|
committer | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2020-09-30 21:00:18 -0400 |
commit | 9bac43b1fbe7f9018503ce7da16d4e626e0daabb (patch) | |
tree | 6058c5477ef2f00e18135b34c99bb61c6fc6b534 /src | |
parent | 594a69579f5d21356021650f87416e29179dbbf8 (diff) | |
download | rneovim-9bac43b1fbe7f9018503ce7da16d4e626e0daabb.tar.gz rneovim-9bac43b1fbe7f9018503ce7da16d4e626e0daabb.tar.bz2 rneovim-9bac43b1fbe7f9018503ce7da16d4e626e0daabb.zip |
userfunc: abort early on invalid refs
Cherry-pick set_ref_in_call_stack() changes from patch 8.1.1575.
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/eval/userfunc.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/nvim/eval/userfunc.c b/src/nvim/eval/userfunc.c index d6a25435fe..e0361048bc 100644 --- a/src/nvim/eval/userfunc.c +++ b/src/nvim/eval/userfunc.c @@ -3413,12 +3413,13 @@ bool set_ref_in_call_stack(int copyID) { bool abort = false; - for (funccall_T *fc = current_funccal; fc != NULL; fc = fc->caller) { + for (funccall_T *fc = current_funccal; !abort && fc != NULL; + fc = fc->caller) { abort = abort || set_ref_in_funccal(fc, copyID); } // Also go through the funccal_stack. - for (funccal_entry_T *entry = funccal_stack; entry != NULL; + for (funccal_entry_T *entry = funccal_stack; !abort && entry != NULL; entry = entry->next) { for (funccall_T *fc = entry->top_funccal; !abort && fc != NULL; fc = fc->caller) { |