From: YAMAMOTO Mitsuharu Date: Tue, 20 Mar 2007 08:50:31 +0000 (+0000) Subject: Include blockinput.h. X-Git-Tag: emacs-pretest-22.0.97~274 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=66cd0949c99ad185fc1ecf4c0e206a695bd19020;p=emacs.git 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. --- diff --git a/src/lread.c b/src/lread.c index 8fc1335698f..30aab7cce32 100644 --- a/src/lread.c +++ b/src/lread.c @@ -36,6 +36,7 @@ Boston, MA 02110-1301, USA. */ #include "keyboard.h" #include "termhooks.h" #include "coding.h" +#include "blockinput.h" #ifdef lint #include @@ -324,14 +325,18 @@ readchar (readcharfun) 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 @@ unreadchar (readcharfun, c) 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 @@ DEFUN ("get-file-char", Fget_file_char, Sget_file_char, 0, 0, 0, () { register Lisp_Object val; + BLOCK_INPUT; XSETINT (val, getc (instream)); + UNBLOCK_INPUT; return val; } @@ -1044,7 +1055,11 @@ load_unwind (arg) /* used as unwind-protect function in load */ { 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; }