* lread.c (Fload): Stop checking Vloads_in_progress and signal
authorJuanma Barranquero <lekktu@gmail.com>
Wed, 25 Feb 2009 12:47:23 +0000 (12:47 +0000)
committerJuanma Barranquero <lekktu@gmail.com>
Wed, 25 Feb 2009 12:47:23 +0000 (12:47 +0000)
  error as soon as a recursive load is detected.

src/ChangeLog
src/lread.c

index 60dc389..120c092 100644 (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
index e5894d6..063adba 100644 (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);
   }