mirror of
https://github.com/vim/vim.git
synced 2025-09-26 04:04:07 -04:00
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)
This commit is contained in:
@@ -750,6 +750,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1927,
|
||||||
/**/
|
/**/
|
||||||
1926,
|
1926,
|
||||||
/**/
|
/**/
|
||||||
|
@@ -6998,12 +6998,11 @@ compile_def_function(ufunc_T *ufunc, int set_return_type, cctx_T *outer_cctx)
|
|||||||
char *errormsg = NULL; // error message
|
char *errormsg = NULL; // error message
|
||||||
cctx_T cctx;
|
cctx_T cctx;
|
||||||
garray_T *instr;
|
garray_T *instr;
|
||||||
int called_emsg_before = called_emsg;
|
int did_emsg_before = did_emsg;
|
||||||
int ret = FAIL;
|
int ret = FAIL;
|
||||||
sctx_T save_current_sctx = current_sctx;
|
sctx_T save_current_sctx = current_sctx;
|
||||||
int save_estack_compiling = estack_compiling;
|
int save_estack_compiling = estack_compiling;
|
||||||
int do_estack_push;
|
int do_estack_push;
|
||||||
int emsg_before = called_emsg;
|
|
||||||
int new_def_function = FALSE;
|
int new_def_function = FALSE;
|
||||||
|
|
||||||
// When using a function that was compiled before: Free old instructions.
|
// When using a function that was compiled before: Free old instructions.
|
||||||
@@ -7107,7 +7106,7 @@ compile_def_function(ufunc_T *ufunc, int set_return_type, cctx_T *outer_cctx)
|
|||||||
|
|
||||||
// Bail out on the first error to avoid a flood of errors and report
|
// Bail out on the first error to avoid a flood of errors and report
|
||||||
// the right line number when inside try/catch.
|
// the right line number when inside try/catch.
|
||||||
if (emsg_before != called_emsg)
|
if (did_emsg_before != did_emsg)
|
||||||
goto erret;
|
goto erret;
|
||||||
|
|
||||||
if (line != NULL && *line == '|')
|
if (line != NULL && *line == '|')
|
||||||
@@ -7127,7 +7126,6 @@ compile_def_function(ufunc_T *ufunc, int set_return_type, cctx_T *outer_cctx)
|
|||||||
// beyond the last line
|
// beyond the last line
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
emsg_before = called_emsg;
|
|
||||||
|
|
||||||
CLEAR_FIELD(ea);
|
CLEAR_FIELD(ea);
|
||||||
ea.cmdlinep = &line;
|
ea.cmdlinep = &line;
|
||||||
@@ -7585,7 +7583,7 @@ erret:
|
|||||||
|
|
||||||
if (errormsg != NULL)
|
if (errormsg != NULL)
|
||||||
emsg(errormsg);
|
emsg(errormsg);
|
||||||
else if (called_emsg == called_emsg_before)
|
else if (did_emsg == did_emsg_before)
|
||||||
emsg(_(e_compiling_def_function_failed));
|
emsg(_(e_compiling_def_function_failed));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -828,7 +828,7 @@ call_def_function(
|
|||||||
int defcount = ufunc->uf_args.ga_len - argc;
|
int defcount = ufunc->uf_args.ga_len - argc;
|
||||||
sctx_T save_current_sctx = current_sctx;
|
sctx_T save_current_sctx = current_sctx;
|
||||||
int breakcheck_count = 0;
|
int breakcheck_count = 0;
|
||||||
int called_emsg_before = called_emsg;
|
int did_emsg_before = did_emsg;
|
||||||
int save_suppress_errthrow = suppress_errthrow;
|
int save_suppress_errthrow = suppress_errthrow;
|
||||||
msglist_T **saved_msg_list = NULL;
|
msglist_T **saved_msg_list = NULL;
|
||||||
msglist_T *private_msg_list = NULL;
|
msglist_T *private_msg_list = NULL;
|
||||||
@@ -853,7 +853,7 @@ call_def_function(
|
|||||||
|| (ufunc->uf_def_status == UF_TO_BE_COMPILED
|
|| (ufunc->uf_def_status == UF_TO_BE_COMPILED
|
||||||
&& compile_def_function(ufunc, FALSE, NULL) == FAIL))
|
&& 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),
|
semsg(_(e_function_is_not_compiled_str),
|
||||||
printable_func_name(ufunc));
|
printable_func_name(ufunc));
|
||||||
return FAIL;
|
return FAIL;
|
||||||
@@ -2924,7 +2924,7 @@ failed_early:
|
|||||||
// Not sure if this is necessary.
|
// Not sure if this is necessary.
|
||||||
suppress_errthrow = save_suppress_errthrow;
|
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),
|
semsg(_(e_unknown_error_while_executing_str),
|
||||||
printable_func_name(ufunc));
|
printable_func_name(ufunc));
|
||||||
return ret;
|
return ret;
|
||||||
|
Reference in New Issue
Block a user