aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2020-09-27 00:02:47 -0400
committerJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2020-09-30 21:00:18 -0400
commit9bac43b1fbe7f9018503ce7da16d4e626e0daabb (patch)
tree6058c5477ef2f00e18135b34c99bb61c6fc6b534 /src
parent594a69579f5d21356021650f87416e29179dbbf8 (diff)
downloadrneovim-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.c5
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) {