XEmacs 21.2.46 "Urania".
[chise/xemacs-chise.git-] / src / callproc.c
index 59baf47..0ee95f0 100644 (file)
@@ -221,8 +221,8 @@ If you quit, the process is killed with SIGINT, or SIGKILL if you
        buffer's current directory.  We can't just have the child check
        for an error when it does the chdir, since it's in a vfork.  */
 
-    NGCPRO2 (current_dir, path);   /* Caller gcprotects args[] */
     current_dir = current_buffer->directory;
+    NGCPRO2 (current_dir, path);   /* Caller gcprotects args[] */
     current_dir = Funhandled_file_name_directory (current_dir);
     current_dir = expand_and_dir_to_file (current_dir, Qnil);
 #if 0
@@ -331,9 +331,6 @@ If you quit, the process is killed with SIGINT, or SIGKILL if you
     REGISTER char **save_environ = environ;
     REGISTER int fd1 = fd[1];
     int fd_error = fd1;
-    char **env;
-
-    env = environ;
 
     /* Record that we're about to create a synchronous process.  */
     synch_process_alive = 1;
@@ -361,10 +358,12 @@ If you quit, the process is killed with SIGINT, or SIGKILL if you
 
     if (fd_error < 0)
       {
+       int save_errno = errno;
        close (filefd);
        close (fd[0]);
        if (fd1 >= 0)
          close (fd1);
+       errno = save_errno;
        report_file_error ("Cannot open", Fcons(error_file, Qnil));
       }
 
@@ -427,8 +426,10 @@ If you quit, the process is killed with SIGINT, or SIGKILL if you
 #ifndef WIN32_NATIVE
   if (pid < 0)
     {
+      int save_errno = errno;
       if (fd[0] >= 0)
        close (fd[0]);
+      errno = save_errno;
       report_file_error ("Doing fork", Qnil);
     }
 #endif
@@ -448,7 +449,6 @@ If you quit, the process is killed with SIGINT, or SIGKILL if you
 
   {
     int nread;
-    int first = 1;
     int total_read = 0;
     Lisp_Object instream;
     struct gcpro ngcpro1;
@@ -482,7 +482,7 @@ If you quit, the process is killed with SIGINT, or SIGKILL if you
        nread = 0;
        while (nread < bufsize - 1024)
          {
-           ssize_t this_read
+           Lstream_data_count this_read
              = Lstream_read (XLSTREAM (instream), bufptr + nread,
                              bufsize - nread);
 
@@ -532,7 +532,6 @@ If you quit, the process is killed with SIGINT, or SIGKILL if you
 
        if (!NILP (display) && INTERACTIVE)
          {
-           first = 0;
            redisplay ();
          }
       }
@@ -865,6 +864,7 @@ When invoked interactively, prints the value in the echo area.
 char *
 egetenv (const char *var)
 {
+  /* This cannot GC -- 7-28-00 ben */
   Bufbyte *value;
   Bytecount valuelen;