Fix reporting of read error line/columns in the init file

* src/lread.c (invalid_syntax_lisp): The comments here said that
we were supposed to be called with point in the readcharfun
buffer.  This was not the case (at least) when reading the Emacs
init file, so the reported line/column was always wrong (1 and 0,
respectively) (bug#54550).
This commit is contained in:
Lars Ingebrigtsen
2022-03-25 17:20:35 +01:00
parent 3e7257c3ed
commit ec2f2ed65e

View File

@@ -550,13 +550,21 @@ invalid_syntax_lisp (Lisp_Object s, Lisp_Object readcharfun)
{
if (BUFFERP (readcharfun))
{
ptrdiff_t line, column;
/* Get the line/column in the readcharfun buffer. */
{
specpdl_ref count = SPECPDL_INDEX ();
record_unwind_protect_excursion ();
set_buffer_internal (XBUFFER (readcharfun));
line = count_lines (BEGV_BYTE, PT_BYTE) + 1;
column = current_column ();
unbind_to (count, Qnil);
}
xsignal (Qinvalid_read_syntax,
list3 (s,
/* We should already be in the readcharfun
buffer when this error is called, so no need
to switch to it first. */
make_fixnum (count_lines (BEGV_BYTE, PT_BYTE) + 1),
make_fixnum (current_column ())));
list3 (s, make_fixnum (line), make_fixnum (column)));
}
else
xsignal1 (Qinvalid_read_syntax, s);