diff src/vim9execute.c @ 19459:423b27246383 v8.2.0287

patch 8.2.0287: Vim9: return in try block not tested; catch not tested Commit: https://github.com/vim/vim/commit/f575adff06d4bc5f670939567ce86974683deb7a Author: Bram Moolenaar <Bram@vim.org> Date: Thu Feb 20 20:41:06 2020 +0100 patch 8.2.0287: Vim9: return in try block not tested; catch not tested Problem: Vim9: return in try block not tested; catch with pattern not tested. Solution: Add tests. Make it work.
author Bram Moolenaar <Bram@vim.org>
date Thu, 20 Feb 2020 20:45:03 +0100
parents 655631882288
children 798fce18d049
line wrap: on
line diff
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -1065,6 +1065,7 @@ call_def_function(
 		    trycmd->tcd_frame = ectx.ec_frame;
 		    trycmd->tcd_catch_idx = iptr->isn_arg.try.try_catch;
 		    trycmd->tcd_finally_idx = iptr->isn_arg.try.try_finally;
+		    trycmd->tcd_caught = FALSE;
 		}
 		break;
 
@@ -1109,7 +1110,7 @@ call_def_function(
 			--trylevel;
 			trycmd = ((trycmd_T *)trystack->ga_data)
 							    + trystack->ga_len;
-			if (trycmd->tcd_caught)
+			if (trycmd->tcd_caught && current_exception != NULL)
 			{
 			    // discard the exception
 			    if (caught_stack == current_exception)