emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 57adf42: ; Fix caching problem in tramp-adb.el


From: Michael Albinus
Subject: [Emacs-diffs] master 57adf42: ; Fix caching problem in tramp-adb.el
Date: Thu, 13 Aug 2015 18:59:31 +0000

branch: master
commit 57adf425f511b90153f128e7679b5f432df13fb5
Author: Jürgen Hötzel <address@hidden>
Commit: Michael Albinus <address@hidden>

    ; Fix caching problem in tramp-adb.el
    
    * lisp/net/tramp-adb.el
    (tramp-adb-handle-directory-files-and-attributes): Make a copy of
    result to prevent modification of the tramp-cache by side effects.
    Use the correct cache key.
---
 lisp/net/tramp-adb.el |   71 +++++++++++++++++++++++++------------------------
 1 files changed, 36 insertions(+), 35 deletions(-)

diff --git a/lisp/net/tramp-adb.el b/lisp/net/tramp-adb.el
index d04d8f6..ca76f62 100644
--- a/lisp/net/tramp-adb.el
+++ b/lisp/net/tramp-adb.el
@@ -394,41 +394,42 @@ pass to the OPERATION."
   "Like `directory-files-and-attributes' for Tramp files."
   (when (file-directory-p directory)
     (with-parsed-tramp-file-name (expand-file-name directory) nil
-      (with-tramp-file-property
-         v localname (format "directory-files-attributes-%s-%s-%s-%s"
-                             full match id-format nosort)
-       (with-current-buffer (tramp-get-buffer v)
-         (when (tramp-adb-send-command-and-check
-                v (format "%s -a -l %s"
-                          (tramp-adb-get-ls-command v)
-                          (tramp-shell-quote-argument localname)))
-           ;; We insert also filename/. and filename/.., because "ls" doesn't.
-           (narrow-to-region (point) (point))
-           (tramp-adb-send-command
-            v (format "%s -d -a -l %s %s"
-                      (tramp-adb-get-ls-command v)
-                      (tramp-shell-quote-argument
-                       (concat (file-name-as-directory localname) "."))
-                      (tramp-shell-quote-argument
-                       (concat (file-name-as-directory localname) ".."))))
-           (widen))
-         (tramp-adb-sh-fix-ls-output)
-         (let ((result (tramp-do-parse-file-attributes-with-ls
-                        v (or id-format 'integer))))
-           (when full
-             (setq result
-                   (mapcar
-                    (lambda (x)
-                      (cons (expand-file-name (car x) directory) (cdr x)))
-                    result)))
-           (unless nosort
-             (setq result
-                   (sort result (lambda (x y) (string< (car x) (car y))))))
-           (delq nil
-                 (mapcar (lambda (x)
-                           (if (or (not match) (string-match match (car x)))
-                               x))
-                         result))))))))
+      (copy-tree
+       (with-tramp-file-property
+          v localname (format "directory-files-and-attributes-%s-%s-%s-%s"
+                              full match id-format nosort)
+        (with-current-buffer (tramp-get-buffer v)
+          (when (tramp-adb-send-command-and-check
+                 v (format "%s -a -l %s"
+                           (tramp-adb-get-ls-command v)
+                           (tramp-shell-quote-argument localname)))
+            ;; We insert also filename/. and filename/.., because "ls" doesn't.
+            (narrow-to-region (point) (point))
+            (tramp-adb-send-command
+             v (format "%s -d -a -l %s %s"
+                       (tramp-adb-get-ls-command v)
+                       (tramp-shell-quote-argument
+                        (concat (file-name-as-directory localname) "."))
+                       (tramp-shell-quote-argument
+                        (concat (file-name-as-directory localname) ".."))))
+            (widen))
+          (tramp-adb-sh-fix-ls-output)
+          (let ((result (tramp-do-parse-file-attributes-with-ls
+                         v (or id-format 'integer))))
+            (when full
+              (setq result
+                    (mapcar
+                     (lambda (x)
+                       (cons (expand-file-name (car x) directory) (cdr x)))
+                     result)))
+            (unless nosort
+              (setq result
+                    (sort result (lambda (x y) (string< (car x) (car y))))))
+            (delq nil
+                  (mapcar (lambda (x)
+                            (if (or (not match) (string-match match (car x)))
+                                x))
+                          result)))))))))
 
 (defun tramp-adb-get-ls-command (vec)
   (with-tramp-connection-property vec "ls"



reply via email to

[Prev in Thread] Current Thread [Next in Thread]