Mercurial > emacs
diff src/lread.c @ 104059:3750eeb20ab9
* lread.c: Rewrite 2009-07-21 changes.
(load_depth): Deleted.
(Qload_in_progress): New variable.
(load_unwind): Don't reference load_depth or load_in_progress.
(Fload): Likewise; specbind Qload_in_progress instead.
(init_lread): Don't initialize load_depth.
(syms_of_lread): Initialize and protect Qload_in_progress.
author | Ken Raeburn <raeburn@raeburn.org> |
---|---|
date | Sat, 25 Jul 2009 07:36:17 +0000 |
parents | b426d08d0ba3 |
children | c7d7a59beb35 |
line wrap: on
line diff
--- a/src/lread.c Fri Jul 24 15:43:22 2009 +0000 +++ b/src/lread.c Sat Jul 25 07:36:17 2009 +0000 @@ -99,9 +99,7 @@ /* non-zero if inside `load' */ int load_in_progress; - -/* Depth of nested `load' invocations. */ -int load_depth; +static Lisp_Object Qload_in_progress; /* Directory in which the sources were found. */ Lisp_Object Vsource_directory; @@ -1253,8 +1251,7 @@ specbind (Qinhibit_file_name_operation, Qnil); load_descriptor_list = Fcons (make_number (fileno (stream)), load_descriptor_list); - load_depth++; - load_in_progress = 1; + specbind (Qload_in_progress, Qt); if (! version || version >= 22) readevalloop (Qget_file_char, stream, hist_file_name, Feval, 0, Qnil, Qnil, Qnil, Qnil); @@ -1316,8 +1313,6 @@ fclose (stream); UNBLOCK_INPUT; } - if (--load_depth < 0) load_depth = 0; - load_in_progress = load_depth > 0; return Qnil; } @@ -4134,7 +4129,6 @@ Vvalues = Qnil; load_in_progress = 0; - load_depth = 0; Vload_file_name = Qnil; load_descriptor_list = Qnil; @@ -4258,6 +4252,8 @@ DEFVAR_BOOL ("load-in-progress", &load_in_progress, doc: /* Non-nil if inside of `load'. */); + Qload_in_progress = intern ("load-in-progress"); + staticpro (&Qload_in_progress); DEFVAR_LISP ("after-load-alist", &Vafter_load_alist, doc: /* An alist of expressions to be evalled when particular files are loaded.