* lisp/files.el (locate-dominating-file): Do not call
file-directory-p each time through a loop ascending the directory
hierarchy, as the file must be a directory after the first loop
iteration. Instead, call file-directory-p just once, before the
loop starts, and do this only if the file name is not already that
of a directory.
(cherry picked from commit
2074951c2adff43be49822c344d6cf3fee2e29a5)
;; Represent /home/luser/foo as ~/foo so that we don't try to look for
;; `name' in /home or in /.
(setq file (abbreviate-file-name (expand-file-name file)))
+ (when (and (not (directory-name-p file))
+ (file-directory-p file))
+ (setq file (file-name-as-directory file)))
(let ((root nil)
try)
(while (not (or root
(null file)
(string-match locate-dominating-stop-dir-regexp file)))
- (setq file (if (file-directory-p file)
- file
- (file-name-directory file))
+ (setq file (file-name-directory file)
try (if (stringp name)
(file-exists-p (expand-file-name name file))
(funcall name file)))