On Fri, Nov 18, 2022 at 3:24 PM Eli Zaretskii <
eliz@gnu.org> wrote:
That is a separate bug, IMO. Is this because in Fload we set 'found'
to the file name of warnings.el/.eln in this case? If so, we should
prevent this nonsense.
The bug is the consequence of maybe_swap_for_eln calling `display-warning', which initiates a recursive Fload while user-init-file is still t, so Fload "records" the current file name.
The easiest fix in my view is to use delayed warnings and avoid the recursive Fload.
diff --git i/src/lread.c w/src/lread.c
index c28324dc35..2a57f72194 100644
--- i/src/lread.c
+++ w/src/lread.c
@@ -1742,10 +1742,13 @@ maybe_swap_for_eln (bool no_native, Lisp_Object *filename, int *fd,
Qnil, Qnil)))
return;
- call2 (intern_c_string ("display-warning"),
- Qcomp,
- CALLN (Fformat,
- build_string ("Cannot look up eln file as "
- "no source file was found for %s"),
- *filename));
+ Vdelayed_warnings_list
+ = Fcons (list2
+ (Qcomp,
+ CALLN (Fformat,
+ build_string ("Cannot look up eln "
+ "file as no source file "
+ "was found for %s"),
+ *filename)),
+ Vdelayed_warnings_list);
return;
}