GNU bug report logs -
#36502
27.0.50; infinite loop in file-name-case-insensitive-p
Previous Next
Reported by: Daniel Sutton <dan <at> dpsutton.com>
Date: Thu, 4 Jul 2019 16:53:02 UTC
Severity: normal
Found in version 27.0.50
Done: Ken Brown <kbrown <at> cornell.edu>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
> From: Ken Brown <kbrown <at> cornell.edu>
> CC: "dan <at> dpsutton.com" <dan <at> dpsutton.com>, "36502 <at> debbugs.gnu.org"
> <36502 <at> debbugs.gnu.org>, "npostavs <at> gmail.com" <npostavs <at> gmail.com>, Andreas
> Schwab <schwab <at> 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?
This bug report was last modified 5 years and 304 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.