Mercurial > emacs
changeset 76624:c8af69547c16
Include blockinput.h.
(readchar, Fget_file_char): Add BLOCK_INPUT around getc.
(unreadchar): Add BLOCK_INPUT around ungetc.
(load_unwind): Add BLOCK_INPUT around fclose.
author | YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> |
---|---|
date | Tue, 20 Mar 2007 08:50:31 +0000 |
parents | 27b51de2d1d7 |
children | 4f322e7c202a |
files | src/lread.c |
diffstat | 1 files changed, 17 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lread.c Tue Mar 20 08:50:10 2007 +0000 +++ b/src/lread.c Tue Mar 20 08:50:31 2007 +0000 @@ -36,6 +36,7 @@ #include "keyboard.h" #include "termhooks.h" #include "coding.h" +#include "blockinput.h" #ifdef lint #include <sys/inode.h> @@ -324,14 +325,18 @@ if (EQ (readcharfun, Qget_file_char)) { + BLOCK_INPUT; c = getc (instream); + UNBLOCK_INPUT; #ifdef EINTR /* Interrupted reads have been observed while reading over the network */ while (c == EOF && ferror (instream) && errno == EINTR) { QUIT; clearerr (instream); + BLOCK_INPUT; c = getc (instream); + UNBLOCK_INPUT; } #endif return c; @@ -414,7 +419,11 @@ else if (EQ (readcharfun, Qlambda)) read_bytecode_char (1); else if (EQ (readcharfun, Qget_file_char)) - ungetc (c, instream); + { + BLOCK_INPUT; + ungetc (c, instream); + UNBLOCK_INPUT; + } else call1 (readcharfun, make_number (c)); } @@ -625,7 +634,9 @@ () { register Lisp_Object val; + BLOCK_INPUT; XSETINT (val, getc (instream)); + UNBLOCK_INPUT; return val; } @@ -1044,7 +1055,11 @@ { FILE *stream = (FILE *) XSAVE_VALUE (arg)->pointer; if (stream != NULL) - fclose (stream); + { + BLOCK_INPUT; + fclose (stream); + UNBLOCK_INPUT; + } if (--load_in_progress < 0) load_in_progress = 0; return Qnil; }