changeset 31734:59c474f6715d v9.0.1199

patch 9.0.1199: crash when using kitty and using a mapping with <Esc> Commit: https://github.com/vim/vim/commit/584b853ee034754edd278d15f2966ac3d8c9d72c Author: Bram Moolenaar <Bram@vim.org> Date: Sat Jan 14 21:07:07 2023 +0000 patch 9.0.1199: crash when using kitty and using a mapping with <Esc> Problem: Crash when using kitty and using a mapping with <Esc>. Solution: Do not try setting did_simplify when it is NULL. (closes https://github.com/vim/vim/issues/11817)
author Bram Moolenaar <Bram@vim.org>
date Sat, 14 Jan 2023 22:15:03 +0100
parents a759a9a70b09
children 8aee9890d69c
files src/misc2.c src/term.c src/version.c src/vim.h
diffstat 4 files changed, 12 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -1498,6 +1498,7 @@ find_special_key(
 			key = DEL;
 		}
 		else if (key == 27
+			&& (flags & FSK_FROM_PART) != 0
 			&& (kitty_protocol_state == KKPS_ENABLED
 			    || kitty_protocol_state == KKPS_DISABLED))
 		{
@@ -1506,7 +1507,10 @@ find_special_key(
 		    // character and set did_simplify, then in the
 		    // non-simplified keys use K_ESC.
 		    if ((flags & FSK_SIMPLIFY) != 0)
-			*did_simplify = TRUE;
+		    {
+			if (did_simplify != NULL)
+			    *did_simplify = TRUE;
+		    }
 		    else
 			key = K_ESC;
 		}
--- a/src/term.c
+++ b/src/term.c
@@ -6636,8 +6636,10 @@ replace_termcodes(
 		}
 	    }
 #endif
-	    slen = trans_special(&src, result + dlen, FSK_KEYCODE
-			  | ((flags & REPTERM_NO_SIMPLIFY) ? 0 : FSK_SIMPLIFY),
+	    int fsk_flags = FSK_KEYCODE
+			| ((flags & REPTERM_NO_SIMPLIFY) ? 0 : FSK_SIMPLIFY)
+			| ((flags & REPTERM_FROM_PART) ? FSK_FROM_PART : 0);
+	    slen = trans_special(&src, result + dlen, fsk_flags,
 							   TRUE, did_simplify);
 	    if (slen > 0)
 	    {
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1199,
+/**/
     1198,
 /**/
     1197,
--- a/src/vim.h
+++ b/src/vim.h
@@ -2818,6 +2818,7 @@ long elapsed(DWORD start_tick);
 #define FSK_KEEP_X_KEY	0x02	// don't translate xHome to Home key
 #define FSK_IN_STRING	0x04	// TRUE in string, double quote is escaped
 #define FSK_SIMPLIFY	0x08	// simplify <C-H> and <A-x>
+#define FSK_FROM_PART	0x10	// left-hand-side of mapping
 
 // Flags for the readdirex function, how to sort the result
 #define READDIR_SORT_NONE	0  // do not sort