diff src/vim9execute.c @ 22810:2d05dd71aac3 v8.2.1953

patch 8.2.1953: Vim9: extra "unknown" error after other error Commit: https://github.com/vim/vim/commit/631e8f93458b102091d54c502f489c03e454d4da Author: Bram Moolenaar <Bram@vim.org> Date: Wed Nov 4 15:07:16 2020 +0100 patch 8.2.1953: Vim9: extra "unknown" error after other error Problem: Vim9: extra "unknown" error after other error. Solution: Restore did_emsg count after EXEC instruction. (closes https://github.com/vim/vim/issues/7254) Improve error message from assert_fails()
author Bram Moolenaar <Bram@vim.org>
date Wed, 04 Nov 2020 15:15:04 +0100
parents 96dbb61a54c2
children 53acb89ec9f2
line wrap: on
line diff
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -1071,8 +1071,15 @@ call_def_function(
 	{
 	    // execute Ex command line
 	    case ISN_EXEC:
-		SOURCING_LNUM = iptr->isn_lnum;
-		do_cmdline_cmd(iptr->isn_arg.string);
+		{
+		    int save_did_emsg = did_emsg;
+
+		    SOURCING_LNUM = iptr->isn_lnum;
+		    do_cmdline_cmd(iptr->isn_arg.string);
+		    // do_cmdline_cmd() will reset did_emsg, but we want to
+		    // keep track of the count to compare with did_emsg_before.
+		    did_emsg += save_did_emsg;
+		}
 		break;
 
 	    // execute Ex command from pieces on the stack