Mercurial > emacs
diff src/lread.c @ 102267:12ffc72c0bbc
* lread.c (Fload): Stop checking Vloads_in_progress and signal
error as soon as a recursive load is detected.
author | Juanma Barranquero <lekktu@gmail.com> |
---|---|
date | Wed, 25 Feb 2009 12:47:23 +0000 |
parents | e038c1a8307c |
children | d7ea9e8841d3 |
line wrap: on
line diff
--- a/src/lread.c Wed Feb 25 12:31:58 2009 +0000 +++ b/src/lread.c Wed Feb 25 12:47:23 2009 +0000 @@ -1113,14 +1113,12 @@ 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); }