changeset 4391:71fa86c8fd4a v7.3.944

updated for version 7.3.944 Problem: External program receives the termrespone. Solution: Insert a delay and discard input. (Hayaki Saito)
author Bram Moolenaar <bram@vim.org>
date Mon, 13 May 2013 20:26:53 +0200
parents 738f2bad1c46
children 430672fe7d54
files src/term.c src/version.c
diffstat 2 files changed, 14 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/term.c
+++ b/src/term.c
@@ -3253,9 +3253,19 @@ stoptermcap()
 	if (!gui.in_use && !gui.starting)
 # endif
 	{
-	    /* May need to check for T_CRV response. */
+	    /* May need to discard T_CRV or T_U7 response. */
 	    if (crv_status == CRV_SENT || u7_status == U7_SENT)
-		(void)vpeekc_nomap();
+	    {
+# ifdef UNIX
+		/* Give the terminal a chance to respond. */
+		mch_delay(100L, FALSE);
+# endif
+# ifdef TCIFLUSH
+		/* Discard data received but not read. */
+		if (exiting)
+		    tcflush(fileno(stdin), TCIFLUSH);
+# endif
+	    }
 	    /* Check for termcodes first, otherwise an external program may
 	     * get them. */
 	    check_for_codes_from_term();
--- a/src/version.c
+++ b/src/version.c
@@ -729,6 +729,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    944,
+/**/
     943,
 /**/
     942,