From 7c2fcf9bad2bed6c0198875384dc2bdb7cbd7e99 Mon Sep 17 00:00:00 2001
From: Eli Zaretskii <eliz@gnu.org>
Date: Wed, 5 Dec 2012 19:39:39 +0200
Subject: [PATCH] Don't pass un-encoded file name to mkstemp.

 src/callproc.c (Fcall_process_region): Encode expanded temp file
 pattern before passing it to mkstemp or mktemp.
---
 src/ChangeLog  | 2 ++
 src/callproc.c | 5 +++--
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/ChangeLog b/src/ChangeLog
index e71667f7dcf..106333ac8ed 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -3,6 +3,8 @@
 	* callproc.c (Fcall_process_region) [!HAVE_MKSTEMP]: If mktemp
 	fails, signal an error instead of continuing with an empty
 	string.  (Bug#13079)
+	Encode expanded temp file pattern before passing it to mkstemp or
+	mktemp.
 
 2012-12-04  Eli Zaretskii  <eliz@gnu.org>
 
diff --git a/src/callproc.c b/src/callproc.c
index ce3b11af696..d152da19f7b 100644
--- a/src/callproc.c
+++ b/src/callproc.c
@@ -959,8 +959,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
-- 
2.39.5