# HG changeset patch # User Bram Moolenaar # Date 1604088004 -3600 # Node ID 48feb3dd0d258b5de48b9041ea4ca9ce35be6001 # Parent eef3cb7bc773c0298887d104ce9c482913e20449 patch 8.2.1927: Vim9: get unknown error with an error in a timer function Commit: https://github.com/vim/vim/commit/d66960bf578410e83ef96ad2f4206b26a139d817 Author: Bram Moolenaar Date: Fri Oct 30 20:46:26 2020 +0100 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 https://github.com/vim/vim/issues/7231) diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1927, +/**/ 1926, /**/ 1925, diff --git a/src/vim9compile.c b/src/vim9compile.c --- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -6998,12 +6998,11 @@ compile_def_function(ufunc_T *ufunc, int 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 @@ compile_def_function(ufunc_T *ufunc, int // 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 @@ compile_def_function(ufunc_T *ufunc, int // beyond the last line break; } - emsg_before = called_emsg; CLEAR_FIELD(ea); ea.cmdlinep = &line; @@ -7585,7 +7583,7 @@ erret: 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 --- a/src/vim9execute.c +++ b/src/vim9execute.c @@ -828,7 +828,7 @@ call_def_function( 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 @@ call_def_function( || (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 @@ failed_early: // 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;