changeset 41463:078a3890c752

(Fload): Detect recursive load error for more than 3 nestings of the same file. (Vrecursive_load_depth_limit): Variable deleted. (syms_of_lread) <recursive-load-depth-limit>: Variable deleted.
author Richard M. Stallman <rms@gnu.org>
date Sun, 25 Nov 2001 02:13:13 +0000
parents e251356bc766
children 93957ea66b86
files src/lread.c
diffstat 1 files changed, 12 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- a/src/lread.c	Sun Nov 25 00:12:11 2001 +0000
+++ b/src/lread.c	Sun Nov 25 02:13:13 2001 +0000
@@ -181,10 +181,6 @@
 
 static Lisp_Object Vloads_in_progress;
 
-/* Limit of the depth of recursive loads.  */
-
-Lisp_Object Vrecursive_load_depth_limit;
-
 /* Non-zero means load dangerous compiled Lisp files.  */
 
 int load_dangerous_libraries;
@@ -734,16 +730,18 @@
 
      Also, just loading a file recursively is not always an error in
      the general case; the second load may do something different.  */
-  if (INTEGERP (Vrecursive_load_depth_limit)
-      && XINT (Vrecursive_load_depth_limit) > 0)
-    {
-      Lisp_Object len = Flength (Vloads_in_progress);
-      if (XFASTINT (len) > XFASTINT (Vrecursive_load_depth_limit))
-	Fsignal (Qerror, Fcons (build_string ("Recursive load suspected"),
-				Fcons (found, Vloads_in_progress)));
-      record_unwind_protect (record_load_unwind, Vloads_in_progress);
-      Vloads_in_progress = Fcons (found, Vloads_in_progress);
-    }
+  {
+    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)
+      Fsignal (Qerror, Fcons (build_string ("Recursive load"),
+			      Fcons (found, Vloads_in_progress)));
+    record_unwind_protect (record_load_unwind, Vloads_in_progress);
+    Vloads_in_progress = Fcons (found, Vloads_in_progress);
+  }
 
   if (!bcmp (&(XSTRING (found)->data[STRING_BYTES (XSTRING (found)) - 4]),
 	     ".elc", 4))
@@ -3658,12 +3656,6 @@
   Vbytecomp_version_regexp
     = build_string ("^;;;.\\(in Emacs version\\|bytecomp version FSF\\)");
 
-  DEFVAR_LISP ("recursive-load-depth-limit", &Vrecursive_load_depth_limit,
-	       doc: /* Limit for depth of recursive loads.
-Value should be either an integer > 0 specifying the limit, or nil for
-no limit.  */);
-  Vrecursive_load_depth_limit = make_number (50);
-
   /* Vsource_directory was initialized in init_lread.  */
 
   load_descriptor_list = Qnil;