summaryrefslogtreecommitdiff
path: root/src/callproc.c
diff options
context:
space:
mode:
authorGlenn Morris <rgm@gnu.org>2012-12-05 22:17:10 -0800
committerGlenn Morris <rgm@gnu.org>2012-12-05 22:17:10 -0800
commitd8ad4d3ff9dcea9c581d72e1e9ec292ea18673b1 (patch)
tree511f16e150fca1ed64ec71800eb0e62a9d95578a /src/callproc.c
parentb7f3003fdd2e6baacddcd7657708e887a6580785 (diff)
parente1d51545ced3cf6f58c44891563dfaf62c34b411 (diff)
downloademacs-d8ad4d3ff9dcea9c581d72e1e9ec292ea18673b1.tar.gz
Merge from emacs-24; up to 2012-11-24T16:58:43Z!cyd@gnu.org
Diffstat (limited to 'src/callproc.c')
-rw-r--r--src/callproc.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/callproc.c b/src/callproc.c
index 2c3d31ba052..6153bc1b6c6 100644
--- a/src/callproc.c
+++ b/src/callproc.c
@@ -977,8 +977,9 @@ usage: (call-process-region START END PROGRAM &optional DELETE BUFFER DISPLAY &r
{
USE_SAFE_ALLOCA;
Lisp_Object pattern = Fexpand_file_name (Vtemp_file_name_pattern, tmpdir);
- char *tempfile = SAFE_ALLOCA (SBYTES (pattern) + 1);
- memcpy (tempfile, SDATA (pattern), SBYTES (pattern) + 1);
+ Lisp_Object encoded_tem = ENCODE_FILE (pattern);
+ char *tempfile = SAFE_ALLOCA (SBYTES (encoded_tem) + 1);
+ memcpy (tempfile, SDATA (encoded_tem), SBYTES (encoded_tem) + 1);
coding_systems = Qt;
#ifdef HAVE_MKSTEMP
@@ -995,7 +996,15 @@ usage: (call-process-region START END PROGRAM &optional DELETE BUFFER DISPLAY &r
close (fd);
}
#else
+ errno = 0;
mktemp (tempfile);
+ if (!*tempfile)
+ {
+ if (!errno)
+ errno = EEXIST;
+ report_file_error ("Failed to open temporary file using pattern",
+ Fcons (pattern, Qnil));
+ }
#endif
filename_string = build_string (tempfile);