patch 8.2.0274: hang with combination of feedkeys(), Ex mode and :global

Problem:    Hang with combination of feedkeys(), Ex mode and :global.
            (Yegappan Lakshmanan)
Solution:   Add the pending_exmode_active flag.
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index a819f64..b78e5ac 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -6185,9 +6185,11 @@
 		hold_gui_events = 0;
 #endif
 		must_redraw = CLEAR;
+		pending_exmode_active = TRUE;
 
 		main_loop(FALSE, TRUE);
 
+		pending_exmode_active = FALSE;
 		RedrawingDisabled = rd;
 		no_wait_return = nwr;
 		msg_scroll = ms;
diff --git a/src/getchar.c b/src/getchar.c
index d056bcc..b828c27 100644
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -3041,6 +3041,10 @@
 #ifdef FEAT_CMDWIN
 		    tc = c;
 #endif
+		    // return from main_loop()
+		    if (pending_exmode_active)
+			exmode_active = EXMODE_NORMAL;
+
 		    break;
 		}
 
diff --git a/src/globals.h b/src/globals.h
index bda75b4..fc551ba 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -1028,6 +1028,10 @@
  * Ex mode (Q) state
  */
 EXTERN int exmode_active INIT(= 0);	// zero, EXMODE_NORMAL or EXMODE_VIM
+
+// Flag set when main_loop() should exit when entering Ex mode.
+EXTERN int pending_exmode_active INIT(= FALSE);
+
 EXTERN int ex_no_reprint INIT(= FALSE); // no need to print after z or p
 
 EXTERN int reg_recording INIT(= 0);	// register for recording  or zero
diff --git a/src/testdir/test_ex_mode.vim b/src/testdir/test_ex_mode.vim
index bf10104..910c1a6 100644
--- a/src/testdir/test_ex_mode.vim
+++ b/src/testdir/test_ex_mode.vim
@@ -111,4 +111,12 @@
   close!
 endfunc
 
+func Test_Ex_feedkeys()
+  " this doesn't do anything useful, just check it doesn't hang
+  new
+  call setline(1, ["foo"])
+  call feedkeys("Qg/foo/visual\<CR>", "xt")
+  bwipe!
+endfunc
+
 " vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index 2fbccd2..6793547 100644
--- a/src/version.c
+++ b/src/version.c
@@ -739,6 +739,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    274,
+/**/
     273,
 /**/
     272,