patch 8.1.0224: hang in bracketed paste mode when t_PE not encountered

Problem:    Hang in bracketed paste mode when t_PE not encountered.
Solution:   Break out of the loop when got_int is set. (suggested by Christian
            Brabandt, closes #3146)
diff --git a/src/edit.c b/src/edit.c
index 657bd2c..e121506 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -9685,22 +9685,31 @@
     int		ret_char = -1;
     int		save_allow_keys = allow_keys;
     int		save_paste = p_paste;
-    int		save_ai = curbuf->b_p_ai;
 
     /* If the end code is too long we can't detect it, read everything. */
     if (STRLEN(end) >= NUMBUFLEN)
 	end = NULL;
     ++no_mapping;
     allow_keys = 0;
-    p_paste = TRUE;
-    curbuf->b_p_ai = FALSE;
+    if (!p_paste)
+	// Also have the side effects of setting 'paste' to make it work much
+	// faster.
+	set_option_value((char_u *)"paste", TRUE, NULL, 0);
 
     for (;;)
     {
-	/* When the end is not defined read everything. */
+	// When the end is not defined read everything there is.
 	if (end == NULL && vpeekc() == NUL)
 	    break;
-	c = plain_vgetc();
+	do
+	{
+	    c = vgetc();
+	} while (c == K_IGNORE || c == K_VER_SCROLLBAR || c == K_HOR_SCROLLBAR);
+	if (c == NUL || got_int)
+	    // When CTRL-C was encountered the typeahead will be flushed and we
+	    // won't get the end sequence.
+	    break;
+
 #ifdef FEAT_MBYTE
 	if (has_mbyte)
 	    idx += (*mb_char2bytes)(c, buf + idx);
@@ -9763,8 +9772,8 @@
 
     --no_mapping;
     allow_keys = save_allow_keys;
-    p_paste = save_paste;
-    curbuf->b_p_ai = save_ai;
+    if (!save_paste)
+	set_option_value((char_u *)"paste", FALSE, NULL, 0);
 
     return ret_char;
 }