changeset 9373:b88c573d8aa4 v7.4.1968

commit https://github.com/vim/vim/commit/1d90a5a5af84250e226f8a9121e771f7b72aa894 Author: Bram Moolenaar <Bram@vim.org> Date: Fri Jul 1 11:59:47 2016 +0200 patch 7.4.1968 Problem: Invalid memory access with "\<C-">. Solution: Do not recognize this as a special character. (Dominique Pelle)
author Christian Brabandt <cb@256bit.org>
date Fri, 01 Jul 2016 12:00:05 +0200
parents b46e82041b5f
children c873b3b5fe30
files src/misc2.c src/testdir/test_expr.vim src/version.c
diffstat 3 files changed, 11 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -2741,8 +2741,10 @@ find_special_key(
 		else
 #endif
 		    l = 1;
-		if (bp[l + 1] == '>')
-		    bp += l;	/* anything accepted, like <C-?> */
+		/* Anything accepted, like <C-?>, except <C-">, because the "
+		 * ends the string. */
+		if (bp[l] != '"' && bp[l + 1] == '>')
+		    bp += l;
 	    }
 	}
 	if (bp[0] == 't' && bp[1] == '_' && bp[2] && bp[3])
--- a/src/testdir/test_expr.vim
+++ b/src/testdir/test_expr.vim
@@ -101,3 +101,8 @@ endfunc
 func Test_set_reg_null_list()
   call setreg('x', test_null_list())
 endfunc
+
+func Test_special_char()
+  " The failure is only visible using valgrind.
+  call assert_fails('echo "\<C-">')
+endfunc
--- a/src/version.c
+++ b/src/version.c
@@ -754,6 +754,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1968,
+/**/
     1967,
 /**/
     1966,