diff --git a/src/ChangeLog b/src/ChangeLog index b17f719ce6d..23fd46bd4cd 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2014-11-25 Eli Zaretskii + + * w32fns.c (Fw32_shell_execute): Convert forward slashes in + DOCUMENT to backslashes, if DOCUMENT is a file. (Bug#19141) + 2014-11-25 Ulrich Müller * Makefile.in (temacs$(EXEEXT)): Use consistent flag settings diff --git a/src/w32fns.c b/src/w32fns.c index bc95005f52a..8bd5e8132b3 100644 --- a/src/w32fns.c +++ b/src/w32fns.c @@ -6987,7 +6987,14 @@ a ShowWindow flag: Lisp_Object absdoc_encoded = ENCODE_FILE (absdoc); if (faccessat (AT_FDCWD, SSDATA (absdoc_encoded), F_OK, AT_EACCESS) == 0) - document = absdoc_encoded; + { + /* ShellExecute fails if DOCUMENT is a UNC with forward + slashes (expand-file-name above converts all backslashes + to forward slashes). Now that we know DOCUMENT is a + file, we can mirror all forward slashes into backslashes. */ + unixtodos_filename (SSDATA (absdoc_encoded)); + document = absdoc_encoded; + } else document = ENCODE_FILE (document); }