changeset 2599:5122736c0a03

(do_autoload): Fixed the bug in the autoload-saving code.
author Eric S. Raymond <esr@snark.thyrsus.com>
date Wed, 28 Apr 1993 17:08:18 +0000
parents 2189edb30955
children 615f7101473a
files src/eval.c
diffstat 1 files changed, 6 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/eval.c	Wed Apr 28 17:08:14 1993 +0000
+++ b/src/eval.c	Wed Apr 28 17:08:18 1993 +0000
@@ -1391,7 +1391,6 @@
   Vautoload_queue = Qt;
   Fload (Fcar (Fcdr (fundef)), Qnil, noninteractive ? Qt : Qnil, Qnil);
 
-#ifdef UNLOAD
   /* Save the old autoloads, in case we ever do an unload. */
   queue = Vautoload_queue;
   while (CONSP (queue))
@@ -1399,11 +1398,15 @@
       first = Fcar (queue);
       second = Fcdr (first);
       first = Fcar (first);
-      if (!EQ (second, Qnil))
+
+      /* Note: This test is subtle.  The cdr of an autoload-queue entry
+	 may be an atom if the autoload entry was generated by a defalias
+	 or fset. */
+      if (CONSP (second))
 	  Fput(first, Qautoload, (Fcdr (second)));
+
       queue = Fcdr (queue);
     }
-#endif /* UNLOAD */
 
   /* Once loading finishes, don't undo it.  */
   Vautoload_queue = Qt;