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);
   }