]> git.eshelyaron.com Git - emacs.git/commitdiff
Include blockinput.h.
authorYAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
Tue, 20 Mar 2007 08:50:31 +0000 (08:50 +0000)
committerYAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
Tue, 20 Mar 2007 08:50:31 +0000 (08:50 +0000)
(readchar, Fget_file_char): Add BLOCK_INPUT around getc.
(unreadchar): Add BLOCK_INPUT around ungetc.
(load_unwind): Add BLOCK_INPUT around fclose.

src/lread.c

index 8fc1335698f729b9230041b2475fce07ed7228dd..30aab7cce322efd92eda4fd516150df0496fcf45 100644 (file)
@@ -36,6 +36,7 @@ Boston, MA 02110-1301, USA.  */
 #include "keyboard.h"
 #include "termhooks.h"
 #include "coding.h"
+#include "blockinput.h"
 
 #ifdef lint
 #include <sys/inode.h>
@@ -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;
 }