updated for version 7.0049
diff --git a/src/ex_getln.c b/src/ex_getln.c
index e17e671..a7dfd9a 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -996,8 +996,13 @@
 
 	case ESC:	/* get here if p_wc != ESC or when ESC typed twice */
 	case Ctrl_C:
-		/* In exmode it doesn't make sense to return. */
-		if (exmode_active)
+		/* In exmode it doesn't make sense to return. Except when
+		 * ":normal" runs out of characters. */
+		if (exmode_active
+#ifdef FEAT_EX_EXTRA
+			&& (ex_normal_busy == 0 || typebuf.tb_len > 0)
+#endif
+		   )
 		    goto cmdline_not_changed;
 
 		gotesc = TRUE;		/* will free ccline.cmdbuff after