]> git.eshelyaron.com Git - emacs.git/commitdiff
(load_depth): New variable.
authorKen Raeburn <raeburn@raeburn.org>
Tue, 21 Jul 2009 09:26:43 +0000 (09:26 +0000)
committerKen Raeburn <raeburn@raeburn.org>
Tue, 21 Jul 2009 09:26:43 +0000 (09:26 +0000)
(Fload, load_unwind, init_lread): Set it to the load recursion
depth; set load_in_progress as a simple boolean based on the
current load_depth.  (Bug#3892)

src/ChangeLog
src/lread.c

index b3c3fbd3f4e8264185f266c3402bcb3e3d3d3997..5f4c417f058e089c00b2e4f9265fd223902462d5 100644 (file)
@@ -1,3 +1,10 @@
+2009-07-21  Ken Raeburn  <raeburn@raeburn.org>
+
+       * lread.c (load_depth): New variable.
+       (Fload, load_unwind, init_lread): Set it to the load recursion
+       depth; set load_in_progress as a simple boolean based on the
+       current load_depth.  (Bug#3892)
+
 2009-07-20  Adrian Robert  <Adrian.B.Robert@gmail.com>
 
        * nsfont.m (ns_has_attribute): Remove.
index cb3f5b046333fe37c46b9b1289bbba9534b08419..ec62c7a8933ef70ebb6bdc18a0dce9da5e80820f 100644 (file)
@@ -100,6 +100,9 @@ extern Lisp_Object Qfile_exists_p;
 /* non-zero if inside `load' */
 int load_in_progress;
 
+/* Depth of nested `load' invocations.  */
+int load_depth;
+
 /* Directory in which the sources were found.  */
 Lisp_Object Vsource_directory;
 
@@ -1250,7 +1253,8 @@ Return t if the file exists and loads successfully.  */)
   specbind (Qinhibit_file_name_operation, Qnil);
   load_descriptor_list
     = Fcons (make_number (fileno (stream)), load_descriptor_list);
-  load_in_progress++;
+  load_depth++;
+  load_in_progress = 1;
   if (! version || version >= 22)
     readevalloop (Qget_file_char, stream, hist_file_name,
                  Feval, 0, Qnil, Qnil, Qnil, Qnil);
@@ -1312,7 +1316,8 @@ load_unwind (arg)  /* used as unwind-protect function in load */
       fclose (stream);
       UNBLOCK_INPUT;
     }
-  if (--load_in_progress < 0) load_in_progress = 0;
+  if (--load_depth < 0) load_depth = 0;
+  load_in_progress = load_depth > 0;
   return Qnil;
 }
 
@@ -4129,6 +4134,7 @@ init_lread ()
   Vvalues = Qnil;
 
   load_in_progress = 0;
+  load_depth = 0;
   Vload_file_name = Qnil;
 
   load_descriptor_list = Qnil;