aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lisp/files.el10
-rw-r--r--test/lisp/files-tests.el8
2 files changed, 17 insertions, 1 deletions
diff --git a/lisp/files.el b/lisp/files.el
index b4872e46b01..204c26416a6 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -6915,7 +6915,15 @@ only these files will be asked to be saved."
6915(defun file-name-non-special (operation &rest arguments) 6915(defun file-name-non-special (operation &rest arguments)
6916 (let ((file-name-handler-alist nil) 6916 (let ((file-name-handler-alist nil)
6917 (default-directory 6917 (default-directory
6918 (if (eq operation 'insert-directory) 6918 ;; Some operations respect file name handlers in
6919 ;; `default-directory'. Because core function like
6920 ;; `call-process' don't care about file name handlers in
6921 ;; `default-directory', we here have to resolve the
6922 ;; directory into a local one. For `process-file',
6923 ;; `start-file-process', and `shell-command', this fixes
6924 ;; Bug#25949.
6925 (if (memq operation '(insert-directory process-file start-file-process
6926 shell-command))
6919 (directory-file-name 6927 (directory-file-name
6920 (expand-file-name 6928 (expand-file-name
6921 (unhandled-file-name-directory default-directory))) 6929 (unhandled-file-name-directory default-directory)))
diff --git a/test/lisp/files-tests.el b/test/lisp/files-tests.el
index 9d456c512b0..80bbeb1bc54 100644
--- a/test/lisp/files-tests.el
+++ b/test/lisp/files-tests.el
@@ -243,5 +243,13 @@ be $HOME."
243 (concat "/:/:" subdir))))) 243 (concat "/:/:" subdir)))))
244 (delete-directory dir 'recursive)))) 244 (delete-directory dir 'recursive))))
245 245
246(ert-deftest files-tests--file-name-non-special--subprocess ()
247 "Check that Bug#25949 is fixed."
248 (skip-unless (executable-find "true"))
249 (should (eq (let ((default-directory "/:/")) (process-file "true")) 0))
250 (should (processp (let ((default-directory "/:/"))
251 (start-file-process "foo" nil "true"))))
252 (should (eq (let ((default-directory "/:/")) (shell-command "true")) 0)))
253
246(provide 'files-tests) 254(provide 'files-tests)
247;;; files-tests.el ends here 255;;; files-tests.el ends here