patch 9.0.1665: empty CmdlineEnter autocommand causes errors in Ex mode

Problem:    Empty CmdlineEnter autocommand causes errors in Ex mode.
Solution:   Save and restore ex_pressedreturn. (Christian Brabandt,
            closes # 12581, closes #12578)
diff --git a/src/autocmd.c b/src/autocmd.c
index 862ddf7..63e5673 100644
--- a/src/autocmd.c
+++ b/src/autocmd.c
@@ -2018,7 +2018,6 @@
     int		did_save_redobuff = FALSE;
     save_redo_T	save_redo;
     int		save_KeyTyped = KeyTyped;
-    int		save_did_emsg;
     ESTACK_CHECK_DECLARATION;
 
     /*
@@ -2310,12 +2309,14 @@
 	else
 	    check_lnums_nested(TRUE);
 
-	save_did_emsg = did_emsg;
+	int save_did_emsg = did_emsg;
+	int save_ex_pressedreturn = get_pressedreturn();
 
 	do_cmdline(NULL, getnextac, (void *)&patcmd,
 				     DOCMD_NOWAIT|DOCMD_VERBOSE|DOCMD_REPEAT);
 
 	did_emsg += save_did_emsg;
+	set_pressedreturn(save_ex_pressedreturn);
 
 	if (nesting == 1)
 	    // restore cursor and topline, unless they were changed
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 959331a..8fda332 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -9840,7 +9840,6 @@
 }
 #endif
 
-#if defined(FEAT_TIMERS) || defined(PROTO)
     int
 get_pressedreturn(void)
 {
@@ -9852,4 +9851,3 @@
 {
      ex_pressedreturn = val;
 }
-#endif
diff --git a/src/testdir/test_ex_mode.vim b/src/testdir/test_ex_mode.vim
index d03ec8f..59c28f3 100644
--- a/src/testdir/test_ex_mode.vim
+++ b/src/testdir/test_ex_mode.vim
@@ -239,6 +239,12 @@
 
   au! CmdLineEnter
   delfunc ExEnterFunc
+
+  au CmdlineEnter * :
+  call feedkeys("gQecho 1\r", 'xt')
+
+  au! CmdlineEnter
+
   quit
 endfunc
 
diff --git a/src/version.c b/src/version.c
index 894b47d..9c451ae 100644
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1665,
+/**/
     1664,
 /**/
     1663,