diff src/userfunc.c @ 26538:dfa658800f21 v8.2.3798

patch 8.2.3798: a :def callback function postpones an error message Commit: https://github.com/vim/vim/commit/3b309f11db7904efcae0177c2825597042c07427 Author: Bram Moolenaar <Bram@vim.org> Date: Mon Dec 13 18:19:55 2021 +0000 patch 8.2.3798: a :def callback function postpones an error message Problem: A :def callback function postpones an error message. Solution: Display the error after calling the function. (closes https://github.com/vim/vim/issues/9340)
author Bram Moolenaar <Bram@vim.org>
date Mon, 13 Dec 2021 19:30:03 +0100
parents 28745eec1dda
children 682ff45f289f
line wrap: on
line diff
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -3173,6 +3173,15 @@ call_callback(
     ++callback_depth;
     ret = call_func(callback->cb_name, len, rettv, argcount, argvars, &funcexe);
     --callback_depth;
+
+    // When a :def function was called that uses :try an error would be turned
+    // into an exception.  Need to give the error here.
+    if (need_rethrow && current_exception != NULL)
+    {
+	need_rethrow = FALSE;
+	handle_did_throw();
+    }
+
     return ret;
 }