diff --git a/src/testdir/test_gui.vim b/src/testdir/test_gui.vim
index e7f7c6d..e13f4c3 100644
--- a/src/testdir/test_gui.vim
+++ b/src/testdir/test_gui.vim
@@ -1708,7 +1708,11 @@
   " Test for <Ctrl-A> to <Ctrl-Z> keys
   for kc in range(65, 90)
     call SendKeys([0x11, kc])
-    let ch = getcharstr()
+    try
+      let ch = getcharstr()
+    catch /^Vim:Interrupt$/
+      let ch = "\<c-c>"
+    endtry
     call assert_equal(nr2char(kc - 64), ch)
   endfor
 
diff --git a/src/testdir/test_mswin_event.vim b/src/testdir/test_mswin_event.vim
index b660993..10e7a81 100644
--- a/src/testdir/test_mswin_event.vim
+++ b/src/testdir/test_mswin_event.vim
@@ -36,6 +36,17 @@
   call SendKeyWithModifiers(a:key, 0)
 endfunc
 
+" getcharstr(0) but catch Vim:Interrupt
+func Getcharstr()
+  try
+    let ch = getcharstr(0)
+  catch /^Vim:Interrupt$/
+    let ch = "\<c-c>"
+  endtry
+  return ch
+endfunc
+
+
 " Send a string of individual key-press events, without modifiers.
 func SendKeyStr(keystring)
   for k in a:keystring
@@ -347,7 +358,7 @@
   for [kcodes, kstr] in a:arr
     " Send as a sequence of key presses.
     call SendKeyGroup(kcodes)
-    let ch = getcharstr(0)
+    let ch = Getcharstr()
     " need to deal a bit differently with the non-printable ascii chars < 0x20
     if kstr < 0x20 && index([s:VK.CONTROL, s:VK.LCONTROL, s:VK.RCONTROL], kcodes[0]) >= 0
       call assert_equal(nr2char(kstr), $"{ch}")
@@ -374,7 +385,7 @@
       endif
     endfor
     call SendKeyWithModifiers(key, modifiers)
-    let ch = getcharstr(0)
+    let ch = Getcharstr()
     " need to deal a bit differently with the non-printable ascii chars < 0x20
     if kstr < 0x20 && index([s:VK.CONTROL, s:VK.LCONTROL, s:VK.RCONTROL],  kcodes[0]) >= 0
       call assert_equal(nr2char(kstr), $"{ch}")
@@ -408,10 +419,10 @@
 " (0x30 - 0x39) : VK_0 - VK_9 are the same as ASCII '0' - '9'
   for kc in range(48, 57)
     call SendKey(kc)
-    let ch = getcharstr(0)
+    let ch = Getcharstr()
     call assert_equal(nr2char(kc), ch)
     call SendKeyWithModifiers(kc, 0)
-    let ch = getcharstr(0)
+    let ch = Getcharstr()
     call assert_equal(nr2char(kc), ch)
   endfor
 
@@ -437,10 +448,10 @@
 " numbered 32 higher than their uppercase versions.
   for kc in range(65, 90)
     call SendKey(kc)
-    let ch = getcharstr(0)
+    let ch = Getcharstr()
     call assert_equal(nr2char(kc + 32), ch)
     call SendKeyWithModifiers(kc, 0)
-    let ch = getcharstr(0)
+    let ch = Getcharstr()
     call assert_equal(nr2char(kc + 32), ch)
   endfor
 
@@ -449,10 +460,10 @@
   for modkey in [s:VK.SHIFT, s:VK.LSHIFT, s:VK.RSHIFT]
     for kc in range(65, 90)
       call SendKeyGroup([modkey, kc])
-      let ch = getcharstr(0)
+      let ch = Getcharstr()
       call assert_equal(nr2char(kc), ch)
       call SendKeyWithModifiers(kc, s:MOD_MASK_SHIFT)
-      let ch = getcharstr(0)
+      let ch = Getcharstr()
       call assert_equal(nr2char(kc), ch)
     endfor
   endfor
@@ -462,10 +473,10 @@
    for modkey in [s:VK.CONTROL, s:VK.LCONTROL, s:VK.RCONTROL]
     for kc in range(65, 90)
       call SendKeyGroup([modkey, kc])
-      let ch = getcharstr(0)
+      let ch = Getcharstr()
       call assert_equal(nr2char(kc - 64), ch)
       call SendKeyWithModifiers(kc, s:MOD_MASK_CTRL)
-      let ch = getcharstr(0)
+      let ch = Getcharstr()
       call assert_equal(nr2char(kc - 64), ch)
     endfor
   endfor
@@ -518,7 +529,7 @@
         while getchar(0)
         endwhile
         call SendKeyWithModifiers(111+n, vim_mod_mask)
-        let ch = getcharstr(0)
+        let ch = Getcharstr()
         let mod_mask = getcharmod()
         call assert_equal(keycode, $"{ch}", $"key = {kstr}")
         " workaround for the virtual termcap maps changing the character
@@ -590,21 +601,21 @@
       while getchar(0)
       endwhile
       execute 'call feedkeys("\<' .. kstr .. '>")'
-      let chstr_fk = getcharstr(0)
+      let chstr_fk = Getcharstr()
       call assert_equal(chstr_eval, chstr_fk, $"feedkeys = <{kstr}>")
 
       " flush out the typeahead buffer
       while getchar(0)
       endwhile
       call SendKey(kcode)
-      let chstr_alone = getcharstr(0)
+      let chstr_alone = Getcharstr()
       let chstr_alone_end = chstr_alone[len(chstr_alone)-2:len(chstr_alone)-1]
 
       " flush out the typeahead buffer
       while getchar(0)
       endwhile
       call SendKeyGroup(mod_keycodes + [kcode])
-      let chstr_mswin = getcharstr(0)
+      let chstr_mswin = Getcharstr()
       let chstr_mswin_end = chstr_mswin[len(chstr_mswin)-2:len(chstr_mswin)-1]
       let mod_mask = getcharmod()
 
@@ -653,7 +664,7 @@
   new
 
   call SendKeyGroup([s:VK.CONTROL, s:VK.OEM_MINUS])
-  let ch = getcharstr(0)
+  let ch = Getcharstr()
   call assert_equal(nr2char(0x1f),ch)
 
   call SendKey(s:VK.KEY_I)
diff --git a/src/version.c b/src/version.c
index 3b56f2f..a21d043 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    51,
+/**/
     50,
 /**/
     49,
