From: Michael Albinus Date: Fri, 8 Jun 2012 13:27:06 +0000 (+0200) Subject: * net/tramp-compat.el (tramp-compat-temporary-file-directory): Avoid infloop. X-Git-Tag: emacs-24.2.90~1199^2~474^2~87 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=03310646a582b3eee44eb685857a5dc31597ceed;p=emacs.git * net/tramp-compat.el (tramp-compat-temporary-file-directory): Avoid infloop. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 4609954ff76..afec55e3f0d 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2012-06-08 Michael Albinus + + * net/tramp-compat.el (tramp-compat-temporary-file-directory): + Avoid infloop. + 2012-06-08 Stefan Monnier * startup.el (argv, argi): Make lexically scoped. diff --git a/lisp/net/tramp-compat.el b/lisp/net/tramp-compat.el index 3a7926980f6..5ae987f0822 100644 --- a/lisp/net/tramp-compat.el +++ b/lisp/net/tramp-compat.el @@ -204,21 +204,23 @@ "Return name of directory for temporary files (compat function). For Emacs, this is the variable `temporary-file-directory', for XEmacs this is the function `temp-directory'." - (cond - ((and (boundp 'temporary-file-directory) - (not (file-remote-p (symbol-value 'temporary-file-directory)))) - (symbol-value 'temporary-file-directory)) - ((fboundp 'temp-directory) (tramp-compat-funcall 'temp-directory)) - ((let ((d (getenv "TEMP"))) (and d (file-directory-p d))) - (file-name-as-directory (getenv "TEMP"))) - ((let ((d (getenv "TMP"))) (and d (file-directory-p d))) - (file-name-as-directory (getenv "TMP"))) - ((let ((d (getenv "TMPDIR"))) (and d (file-directory-p d))) - (file-name-as-directory (getenv "TMPDIR"))) - ((file-exists-p "c:/temp") (file-name-as-directory "c:/temp")) - (t (message (concat "Neither `temporary-file-directory' nor " - "`temp-directory' is defined -- using /tmp.")) - (file-name-as-directory "/tmp")))) + (let (file-name-handler-alist) + (cond + ;; We must return a local directory. If it is remote, we could + ;; run into an infloop. + ((boundp 'temporary-file-directory) + (eval (car (get 'temporary-file-directory 'standard-value)))) + ((fboundp 'temp-directory) (tramp-compat-funcall 'temp-directory)) + ((let ((d (getenv "TEMP"))) (and d (file-directory-p d))) + (file-name-as-directory (getenv "TEMP"))) + ((let ((d (getenv "TMP"))) (and d (file-directory-p d))) + (file-name-as-directory (getenv "TMP"))) + ((let ((d (getenv "TMPDIR"))) (and d (file-directory-p d))) + (file-name-as-directory (getenv "TMPDIR"))) + ((file-exists-p "c:/temp") (file-name-as-directory "c:/temp")) + (t (message (concat "Neither `temporary-file-directory' nor " + "`temp-directory' is defined -- using /tmp.")) + (file-name-as-directory "/tmp"))))) ;; `make-temp-file' exists in Emacs only. On XEmacs, we use our own ;; implementation with `make-temp-name', creating the temporary file