* lread.c (Fload): Stop checking Vloads_in_progress and signal

error as soon as a recursive load is detected.
This commit is contained in:
Juanma Barranquero 2009-02-25 12:47:23 +00:00
parent 96ad1a2f46
commit 8fc457448c
2 changed files with 11 additions and 8 deletions

View file

@ -1,3 +1,8 @@
2009-02-25 Juanma Barranquero <lekktu@gmail.com>
* lread.c (Fload): Stop checking Vloads_in_progress as soon as
a recursive load is detected.
2009-02-24 Adrian Robert <Adrian.B.Robert@gmail.com>
* nsterm.m (ns_ring_bell): Convert rect to window coordinates

View file

@ -1113,14 +1113,12 @@ Return t if the file exists and loads successfully. */)
int count = 0;
Lisp_Object tem;
for (tem = Vloads_in_progress; CONSP (tem); tem = XCDR (tem))
if (!NILP (Fequal (found, XCAR (tem))))
count++;
if (count > 3)
{
if (fd >= 0)
emacs_close (fd);
signal_error ("Recursive load", Fcons (found, Vloads_in_progress));
}
if (!NILP (Fequal (found, XCAR (tem))) && (++count > 3))
{
if (fd >= 0)
emacs_close (fd);
signal_error ("Recursive load", Fcons (found, Vloads_in_progress));
}
record_unwind_protect (record_load_unwind, Vloads_in_progress);
Vloads_in_progress = Fcons (found, Vloads_in_progress);
}