[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#36502: Fwd: bug#36502: 27.0.50; infinite loop in file-name-case-inse
From: |
Eli Zaretskii |
Subject: |
bug#36502: Fwd: bug#36502: 27.0.50; infinite loop in file-name-case-insensitive-p |
Date: |
Mon, 08 Jul 2019 20:23:21 +0300 |
> From: Ken Brown <kbrown@cornell.edu>
> CC: "dan@dpsutton.com" <dan@dpsutton.com>, "36502@debbugs.gnu.org"
> <36502@debbugs.gnu.org>, "npostavs@gmail.com" <npostavs@gmail.com>,
> Andreas
> Schwab <schwab@suse.de>
> Date: Mon, 8 Jul 2019 16:44:23 +0000
>
> --- a/src/fileio.c
> +++ b/src/fileio.c
> @@ -804,7 +804,22 @@ DEFUN ("expand-file-name", Fexpand_file_name,
> Sexpand_file_name, 1, 2, 0,
>
> /* Use the buffer's default-directory if DEFAULT_DIRECTORY is omitted. */
> if (NILP (default_directory))
> - default_directory = BVAR (current_buffer, directory);
> + {
> + Lisp_Object dir = BVAR (current_buffer, directory);
> + /* The buffer's default-directory should be absolute. If it
> + isn't, try to expand it relative to invocation-directory.
> + But we have to be careful to avoid an infinite loop, because
> + the code in emacs.c that sets Vinvocation_directory might
> + call Fexpand_file_name. */
> + if (STRINGP (dir))
> + {
> + if (!NILP (Ffile_name_absolute_p (dir)))
> + default_directory = dir;
> + else if (STRINGP (Vinvocation_directory)
> + && !NILP (Ffile_name_absolute_p (Vinvocation_directory)))
> + default_directory = Fexpand_file_name (dir,
> Vinvocation_directory);
> + }
> + }
> if (! STRINGP (default_directory))
> {
> #ifdef DOS_NT
LGTM, thanks. Can we have a test for this subtle use case, so that we
never regress?
- bug#36502: Fwd: bug#36502: 27.0.50; infinite loop in file-name-case-insensitive-p, (continued)
- bug#36502: Fwd: bug#36502: 27.0.50; infinite loop in file-name-case-insensitive-p, Ken Brown, 2019/07/06
- bug#36502: Fwd: bug#36502: 27.0.50; infinite loop in file-name-case-insensitive-p, Eli Zaretskii, 2019/07/06
- bug#36502: Fwd: bug#36502: 27.0.50; infinite loop in file-name-case-insensitive-p, Ken Brown, 2019/07/07
- bug#36502: Fwd: bug#36502: 27.0.50; infinite loop in file-name-case-insensitive-p, Eli Zaretskii, 2019/07/07
- bug#36502: Fwd: bug#36502: 27.0.50; infinite loop in file-name-case-insensitive-p, Ken Brown, 2019/07/07
- bug#36502: Fwd: bug#36502: 27.0.50; infinite loop in file-name-case-insensitive-p, Eli Zaretskii, 2019/07/08
- bug#36502: Fwd: bug#36502: 27.0.50; infinite loop in file-name-case-insensitive-p, Ken Brown, 2019/07/08
- bug#36502: Fwd: bug#36502: 27.0.50; infinite loop in file-name-case-insensitive-p, Eli Zaretskii, 2019/07/08
- bug#36502: Fwd: bug#36502: 27.0.50; infinite loop in file-name-case-insensitive-p, Ken Brown, 2019/07/08
- bug#36502: Fwd: bug#36502: 27.0.50; infinite loop in file-name-case-insensitive-p, Ken Brown, 2019/07/08
- bug#36502: Fwd: bug#36502: 27.0.50; infinite loop in file-name-case-insensitive-p,
Eli Zaretskii <=
- bug#36502: Fwd: bug#36502: 27.0.50; infinite loop in file-name-case-insensitive-p, Ken Brown, 2019/07/10
- bug#36502: Fwd: bug#36502: 27.0.50; infinite loop in file-name-case-insensitive-p, Richard Stallman, 2019/07/11
- bug#36502: Fwd: bug#36502: 27.0.50; infinite loop in file-name-case-insensitive-p, Eli Zaretskii, 2019/07/12
- bug#36502: Fwd: bug#36502: 27.0.50; infinite loop in file-name-case-insensitive-p, Ken Brown, 2019/07/12
- bug#36502: Fwd: bug#36502: 27.0.50; infinite loop in file-name-case-insensitive-p, Ken Brown, 2019/07/15
- bug#36502: Fwd: bug#36502: 27.0.50; infinite loop in file-name-case-insensitive-p, Eli Zaretskii, 2019/07/19
- bug#36502: Fwd: bug#36502: 27.0.50; infinite loop in file-name-case-insensitive-p, Eli Zaretskii, 2019/07/20
- bug#36502: Fwd: bug#36502: 27.0.50; infinite loop in file-name-case-insensitive-p, Ken Brown, 2019/07/20
- bug#36502: Fwd: bug#36502: 27.0.50; infinite loop in file-name-case-insensitive-p, Eli Zaretskii, 2019/07/20
- bug#36502: Fwd: bug#36502: 27.0.50; infinite loop in file-name-case-insensitive-p, Paul Eggert, 2019/07/20