1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-12 09:28:24 +00:00

Fix problem with symlinks in compile buffers

* lisp/progmodes/compile.el (compilation-find-file): Avoid
`expand-file-name' when computing the file names, because that will
reliably give the wrong result when there's symlinks and ".."
involved (bug#8035).
This commit is contained in:
Lars Ingebrigtsen 2021-08-26 19:28:34 +02:00
parent 869579170b
commit ee2ffd9c9e

View File

@ -2951,7 +2951,8 @@ attempts to find a file whose name is produced by (format FMT FILENAME)."
fmts formats)
;; For each directory, try each format string.
(while (and fmts (null buffer))
(setq name (expand-file-name (format (car fmts) filename) thisdir)
(setq name (file-truename
(file-name-concat thisdir (format (car fmts) filename)))
buffer (and (file-exists-p name)
(find-file-noselect name))
fmts (cdr fmts)))
@ -2973,7 +2974,8 @@ attempts to find a file whose name is produced by (format FMT FILENAME)."
(setq thisdir (car dirs)
fmts formats)
(while (and fmts (null buffer))
(setq name (expand-file-name (format (car fmts) filename) thisdir)
(setq name (file-truename
(file-name-concat thisdir (format (car fmts) filename)))
buffer (and (file-exists-p name)
(find-file-noselect name))
fmts (cdr fmts)))
@ -3016,7 +3018,8 @@ attempts to find a file whose name is produced by (format FMT FILENAME)."
(ding) (sit-for 2))
((and (file-directory-p name)
(not (file-exists-p
(setq name (expand-file-name filename name)))))
(setq name (file-truename
(file-name-concat name filename))))))
(message "No `%s' in directory %s" filename origname)
(ding) (sit-for 2))
(t