patch 8.2.1927: Vim9: get unknown error with an error in a timer function
Problem: Vim9: get unknown error with an error in a timer function.
Solution: Use did_emsg instead of called_emsg. (closes #7231)
diff --git a/src/version.c b/src/version.c
index 96a9430..be975a7 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1927,
+/**/
1926,
/**/
1925,
diff --git a/src/vim9compile.c b/src/vim9compile.c
index 225d5d5..bc1481d 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -6998,12 +6998,11 @@
char *errormsg = NULL; // error message
cctx_T cctx;
garray_T *instr;
- int called_emsg_before = called_emsg;
+ int did_emsg_before = did_emsg;
int ret = FAIL;
sctx_T save_current_sctx = current_sctx;
int save_estack_compiling = estack_compiling;
int do_estack_push;
- int emsg_before = called_emsg;
int new_def_function = FALSE;
// When using a function that was compiled before: Free old instructions.
@@ -7107,7 +7106,7 @@
// Bail out on the first error to avoid a flood of errors and report
// the right line number when inside try/catch.
- if (emsg_before != called_emsg)
+ if (did_emsg_before != did_emsg)
goto erret;
if (line != NULL && *line == '|')
@@ -7127,7 +7126,6 @@
// beyond the last line
break;
}
- emsg_before = called_emsg;
CLEAR_FIELD(ea);
ea.cmdlinep = &line;
@@ -7585,7 +7583,7 @@
if (errormsg != NULL)
emsg(errormsg);
- else if (called_emsg == called_emsg_before)
+ else if (did_emsg == did_emsg_before)
emsg(_(e_compiling_def_function_failed));
}
diff --git a/src/vim9execute.c b/src/vim9execute.c
index 9c46651..abf88b1 100644
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -828,7 +828,7 @@
int defcount = ufunc->uf_args.ga_len - argc;
sctx_T save_current_sctx = current_sctx;
int breakcheck_count = 0;
- int called_emsg_before = called_emsg;
+ int did_emsg_before = did_emsg;
int save_suppress_errthrow = suppress_errthrow;
msglist_T **saved_msg_list = NULL;
msglist_T *private_msg_list = NULL;
@@ -853,7 +853,7 @@
|| (ufunc->uf_def_status == UF_TO_BE_COMPILED
&& compile_def_function(ufunc, FALSE, NULL) == FAIL))
{
- if (called_emsg == called_emsg_before)
+ if (did_emsg == did_emsg_before)
semsg(_(e_function_is_not_compiled_str),
printable_func_name(ufunc));
return FAIL;
@@ -2924,7 +2924,7 @@
// Not sure if this is necessary.
suppress_errthrow = save_suppress_errthrow;
- if (ret != OK && called_emsg == called_emsg_before)
+ if (ret != OK && did_emsg == did_emsg_before)
semsg(_(e_unknown_error_while_executing_str),
printable_func_name(ufunc));
return ret;