]> code.delx.au - gnu-emacs/commitdiff
Fix w32 bug with call-process-region.
authorPaul Eggert <eggert@cs.ucla.edu>
Tue, 16 Jul 2013 22:40:17 +0000 (15:40 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Tue, 16 Jul 2013 22:40:17 +0000 (15:40 -0700)
* callproc.c (Fcall_process_region): Pass nil, not "/dev/null",
to Fcall_process when the input is empty.  This simplifies the
code a bit.  It makes no difference on POSIXish platforms but
apparently it fixes a bug on w32.

Fixes: debbugs:14885
src/ChangeLog
src/callproc.c

index ab90682aa672113085469d62f40e1c1328924fe8..a70058ac690865390bac008b7b11cf32437ad818 100644 (file)
@@ -1,6 +1,12 @@
 2013-07-16  Paul Eggert  <eggert@cs.ucla.edu>
 
-       Fix bug where Emacs tries to close a file twice (Bug#14839).
+       Fix w32 bug with call-process-region (Bug#14885).
+       * callproc.c (Fcall_process_region): Pass nil, not "/dev/null",
+       to Fcall_process when the input is empty.  This simplifies the
+       code a bit.  It makes no difference on POSIXish platforms but
+       apparently it fixes a bug on w32.
+
+       Fix bug where insert-file-contents closes a file twice. (Bug#14839).
        * fileio.c (close_file_unwind): Don't close if FD is negative;
        this can happen when unwinding a zapped file descriptor.
        (Finsert_file_contents): Unwind-protect the fd before the point marker,
index f2c8c0c6223080c48f34accaf9711ac2a5d008fc..85ebf449e43797e2720155deaaeaa6242c58cc1e 100644 (file)
@@ -1093,7 +1093,7 @@ usage: (call-process-region START END PROGRAM &optional DELETE BUFFER DISPLAY &r
   (ptrdiff_t nargs, Lisp_Object *args)
 {
   struct gcpro gcpro1;
-  Lisp_Object filename_string;
+  Lisp_Object infile;
   ptrdiff_t count = SPECPDL_INDEX ();
   Lisp_Object start = args[0];
   Lisp_Object end = args[1];
@@ -1111,10 +1111,8 @@ usage: (call-process-region START END PROGRAM &optional DELETE BUFFER DISPLAY &r
       empty_input = XINT (start) == XINT (end);
     }
 
-  filename_string = (empty_input
-                    ? build_string (NULL_DEVICE)
-                    : create_temp_file (nargs, args));
-  GCPRO1 (filename_string);
+  infile = empty_input ? Qnil : create_temp_file (nargs, args);
+  GCPRO1 (infile);
 
   if (nargs > 3 && !NILP (args[3]))
     Fdelete_region (start, end);
@@ -1129,7 +1127,7 @@ usage: (call-process-region START END PROGRAM &optional DELETE BUFFER DISPLAY &r
       args[0] = args[2];
       nargs = 2;
     }
-  args[1] = filename_string;
+  args[1] = infile;
 
   RETURN_UNGCPRO (unbind_to (count, Fcall_process (nargs, args)));
 }