]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/files.el (dir-locals-read-from-file): Better handle errors
authorArtur Malabarba <bruce.connor.am@gmail.com>
Tue, 10 Nov 2015 13:14:49 +0000 (13:14 +0000)
committerArtur Malabarba <bruce.connor.am@gmail.com>
Tue, 10 Nov 2015 13:14:49 +0000 (13:14 +0000)
lisp/files.el

index 58ed35730feaf9015d279fb64c19a89e54d5c0e3..efba15ea15ffe86eb704f7f69397f21859468d0e 100644 (file)
@@ -3808,6 +3808,7 @@ is found.  Returns the new class name."
          (class-name (intern dir-name))
          (files (dir-locals--all-files file))
          (read-circle nil)
+         (success nil)
          (variables))
     (with-demoted-errors "Error reading dir-locals: %S"
       (dolist (file files)
@@ -3818,13 +3819,19 @@ is found.  Returns the new class name."
                     (map-merge-with 'list (lambda (a b) (map-merge 'list a b))
                                     variables
                                     (read (current-buffer))))
-            (end-of-file nil)))))
+            (end-of-file nil))))
+      (setq success t))
     (dir-locals-set-class-variables class-name variables)
     (dir-locals-set-directory-class
      dir-name class-name
-     (seconds-to-time (apply #'max (mapcar (lambda (file)
-                                             (time-to-seconds (nth 5 (file-attributes file))))
-                                           files))))
+     (seconds-to-time
+      (if success
+          (apply #'max (mapcar (lambda (file)
+                                 (time-to-seconds (nth 5 (file-attributes file))))
+                               files))
+        ;; If there was a problem, use the values we could get but
+        ;; don't let the cache prevent future reads.
+        0)))
     class-name))
 
 (defcustom enable-remote-dir-locals nil