* net/tramp.el (tramp-file-name-handler): Avoid recursive
authorMichael Albinus <michael.albinus@gmx.de>
Fri, 22 Jul 2011 11:04:55 +0000 (13:04 +0200)
committerMichael Albinus <michael.albinus@gmx.de>
Fri, 22 Jul 2011 11:04:55 +0000 (13:04 +0200)
loading.  (Bug#9114)

lisp/ChangeLog
lisp/net/tramp.el

index a216989..848d991 100644 (file)
@@ -1,3 +1,8 @@
+2011-07-22  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp.el (tramp-file-name-handler): Avoid recursive
+       loading.  (Bug#9114)
+
 2011-07-21  Martin Rudalics  <rudalics@gmx.at>
 
        * window.el (display-buffer-pop-up-window)
index 82d878a..9b11ef5 100644 (file)
@@ -1876,7 +1876,17 @@ Falls back to normal file name handler if no Tramp file name handler exists."
            ;; Call the backend function.
            (if foreign
                (condition-case err
-                   (apply foreign operation args)
+                   (let ((sf (symbol-function foreign)))
+                     ;; Some packages set the default directory to a
+                     ;; remote path, before respective Tramp packages
+                     ;; are already loaded.  This results in
+                     ;; recursive loading.  Therefore, we load the
+                     ;; Tramp packages locally.
+                     (when (and (listp sf) (eq (car sf) 'autoload))
+                       (let ((default-directory
+                               (tramp-compat-temporary-file-directory)))
+                         (load (cadr sf) 'noerror)))
+                     (apply foreign operation args))
 
                  ;; Trace that somebody has interrupted the operation.
                  (quit