]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix 'send-string-to-terminal' writing very long strings
authorEli Zaretskii <eliz@gnu.org>
Sat, 7 Nov 2020 09:19:44 +0000 (11:19 +0200)
committerEli Zaretskii <eliz@gnu.org>
Sat, 7 Nov 2020 09:19:44 +0000 (11:19 +0200)
* src/dispnew.c (Fsend_string_to_terminal): Prevent partial writes
by blocking SIGIO while 'fwrite' runs.  (Bug#44320)

src/dispnew.c

index 5b6fa51a563f581cd9914f1aa2fffaab4dbddf95..df55b32c718860d1b86181cadd23ac5137fb62a8 100644 (file)
@@ -5904,8 +5904,12 @@ when TERMINAL is nil.  */)
        }
       out = tty->output;
     }
+  /* STRING might be very long, in which case fwrite could be
+     interrupted by SIGIO.  So we temporarily block SIGIO.  */
+  unrequest_sigio ();
   fwrite (SDATA (string), 1, SBYTES (string), out);
   fflush (out);
+  request_sigio ();
   unblock_input ();
   return Qnil;
 }