changeset 94909:11f28d8c2c22

(update_frame_1): Check if tty output is still valid before flushing it.
author Chong Yidong <cyd@stupidchicken.com>
date Tue, 13 May 2008 21:19:03 +0000
parents 1215d390d74a
children 3c91cba34532
files src/dispnew.c
diffstat 1 files changed, 16 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/src/dispnew.c	Tue May 13 21:18:42 2008 +0000
+++ b/src/dispnew.c	Tue May 13 21:19:03 2008 +0000
@@ -5302,22 +5302,26 @@
 		 Also flush out if likely to have more than 1k buffered
 		 otherwise.   I'm told that some telnet connections get
 		 really screwed by more than 1k output at once.  */
-	      int outq = PENDING_OUTPUT_COUNT (FRAME_TTY (f)->output);
-	      if (outq > 900
-		  || (outq > 20 && ((i - 1) % preempt_count == 0)))
+	      FILE *display_output = FRAME_TTY (f)->output;
+	      if (display_output)
 		{
-		  fflush (FRAME_TTY (f)->output);
-		  if (preempt_count == 1)
+		  int outq = PENDING_OUTPUT_COUNT (display_output);
+		  if (outq > 900
+		      || (outq > 20 && ((i - 1) % preempt_count == 0)))
 		    {
+		      fflush (display_output);
+		      if (preempt_count == 1)
+			{
 #ifdef EMACS_OUTQSIZE
-		      if (EMACS_OUTQSIZE (0, &outq) < 0)
-			/* Probably not a tty.  Ignore the error and reset
-			   the outq count.  */
-			outq = PENDING_OUTPUT_COUNT (FRAME_TTY (f->output));
+			  if (EMACS_OUTQSIZE (0, &outq) < 0)
+			    /* Probably not a tty.  Ignore the error and reset
+			       the outq count.  */
+			    outq = PENDING_OUTPUT_COUNT (FRAME_TTY (f->output));
 #endif
-		      outq *= 10;
-		      if (baud_rate <= outq && baud_rate > 0)
-			sleep (outq / baud_rate);
+			  outq *= 10;
+			  if (baud_rate <= outq && baud_rate > 0)
+			    sleep (outq / baud_rate);
+			}
 		    }
 		}
 	    }