diff src/ex_eval.c @ 25872:a58520ab7c3b v8.2.3470

patch 8.2.3470: crash with error in :catch and also in :finally Commit: https://github.com/vim/vim/commit/a684a684096ecef3fbaee39c573b47423235d6b1 Author: Bram Moolenaar <Bram@vim.org> Date: Mon Oct 4 18:52:19 2021 +0100 patch 8.2.3470: crash with error in :catch and also in :finally Problem: Crash with error in :catch and also in :finally. Solution: Only discard an exception if there is one. (closes https://github.com/vim/vim/issues/8954)
author Bram Moolenaar <Bram@vim.org>
date Mon, 04 Oct 2021 20:00:06 +0200
parents 8556ded8a462
children c83ebae45881
line wrap: on
line diff
--- a/src/ex_eval.c
+++ b/src/ex_eval.c
@@ -2374,7 +2374,8 @@ cleanup_conditionals(
 		    default:
 			if (cstack->cs_flags[idx] & CSF_FINALLY)
 			{
-			    if (cstack->cs_pending[idx] & CSTP_THROW)
+			    if ((cstack->cs_pending[idx] & CSTP_THROW)
+				    && cstack->cs_exception[idx] != NULL)
 			    {
 				// Cancel the pending exception.  This is in the
 				// finally clause, so that the stack of the