]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix problem with auto-mode and dir-locals-collect-variables
authorLars Ingebrigtsen <larsi@gnus.org>
Wed, 25 Jan 2017 16:43:44 +0000 (17:43 +0100)
committerLars Ingebrigtsen <larsi@gnus.org>
Wed, 25 Jan 2017 16:43:44 +0000 (17:43 +0100)
* lisp/files.el (dir-locals-collect-variables): When run from
auto-mode, the file in question may not be an absolute path
name (bug#24016).

Example backtrace:

Debugger entered--Lisp error: (args-out-of-range "compile-1st-in-loa
  dir-locals-collect-variables(((emacs-lisp-mode (indent-tabs-mode))
  hack-dir-local-variables()
  hack-local-variables(no-mode)
  run-mode-hooks(diff-mode-hook)
  diff-mode()
  mm-display-inline-fontify((#<buffer  *mm*-923037> ("text/x-diff" (

lisp/files.el

index f60282b775a406380d294060b05f8b64ec9830a0..25392fdcc71877ad84925cb11ae38e9dd699f5af 100644 (file)
@@ -3723,7 +3723,8 @@ Return the new variables list."
   (let* ((file-name (or (buffer-file-name)
                        ;; Handle non-file buffers, too.
                        (expand-file-name default-directory)))
-        (sub-file-name (if file-name
+        (sub-file-name (if (and file-name
+                                 (file-name-absolute-p file-name))
                             ;; FIXME: Why not use file-relative-name?
                            (substring file-name (length root)))))
     (condition-case err