diff --git a/src/fns.c b/src/fns.c index 9a3121a3391..d85a6adfeb1 100644 --- a/src/fns.c +++ b/src/fns.c @@ -66,6 +66,7 @@ int use_file_dialog; extern int minibuffer_auto_raise; extern Lisp_Object minibuf_window; extern Lisp_Object Vlocale_coding_system; +extern Lisp_Object Vloads_in_progress; Lisp_Object Qstring_lessp, Qprovide, Qrequire; Lisp_Object Qyes_or_no_p_history; @@ -3444,9 +3445,15 @@ The normal messages at start and end of loading FILENAME are suppressed. */) CHECK_SYMBOL (feature); /* Record the presence of `require' in this file - even if the feature specified is already loaded. */ - LOADHIST_ATTACH (Fcons (Qrequire, feature)); - + even if the feature specified is already loaded. + But not more than once in any file, + and not when we aren't loading a file. */ + if (! NILP (Vloads_in_progress)) + { + tem = Fcons (Qrequire, feature); + if (NILP (Fmember (tem, Vcurrent_load_list))) + LOADHIST_ATTACH (tem); + } tem = Fmemq (feature, Vfeatures); if (NILP (tem))