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:
20
src/lread.c
20
src/lread.c
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user