diff src/eval.c @ 90208:890cc78a5a24

Revision: miles@gnu.org--gnu-2005/emacs--unicode--0--patch-74 Merge from emacs--cvs-trunk--0 Patches applied: * emacs--cvs-trunk--0 (patch 493-503) - Update from CVS - Update from CVS: lisp/startup.el (command-line): Fix typo. - Merge from gnus--rel--5.10 * gnus--rel--5.10 (patch 95-98) - Update from CVS
author Miles Bader <miles@gnu.org>
date Fri, 29 Jul 2005 01:54:54 +0000
parents 187d6a1f84f7 8cbdc86a4f55
children 2d92f5c9d6ae
line wrap: on
line diff
--- a/src/eval.c	Tue Jul 26 12:03:19 2005 +0000
+++ b/src/eval.c	Fri Jul 29 01:54:54 2005 +0000
@@ -807,18 +807,6 @@
   register Lisp_Object sym, tem, tail;
 
   sym = Fcar (args);
-  if (SYMBOL_CONSTANT_P (sym))
-    {
-      /* For updward compatibility, allow (defvar :foo (quote :foo)).  */
-      tem = Fcar (Fcdr (args));
-      if (! (CONSP (tem)
-	     && EQ (XCAR (tem), Qquote)
-	     && CONSP (XCDR (tem))
-	     && EQ (XCAR (XCDR (tem)), sym)))
-	error ("Constant symbol `%s' specified in defvar",
-	       SDATA (SYMBOL_NAME (sym)));
-    }
-
   tail = Fcdr (args);
   if (!NILP (Fcdr (Fcdr (tail))))
     error ("Too many arguments");
@@ -826,6 +814,18 @@
   tem = Fdefault_boundp (sym);
   if (!NILP (tail))
     {
+      if (SYMBOL_CONSTANT_P (sym))
+	{
+	  /* For upward compatibility, allow (defvar :foo (quote :foo)).  */
+	  Lisp_Object tem = Fcar (tail);
+	  if (! (CONSP (tem)
+		 && EQ (XCAR (tem), Qquote)
+		 && CONSP (XCDR (tem))
+		 && EQ (XCAR (XCDR (tem)), sym)))
+	    error ("Constant symbol `%s' specified in defvar",
+		   SDATA (SYMBOL_NAME (sym)));
+	}
+
       if (NILP (tem))
 	Fset_default (sym, Feval (Fcar (tail)));
       else
@@ -2094,7 +2094,8 @@
     return form;
 
   QUIT;
-  if (consing_since_gc > gc_cons_combined_threshold)
+  if (consing_since_gc > gc_cons_threshold
+      && consing_since_gc > gc_relative_threshold)
     {
       GCPRO1 (form);
       Fgarbage_collect ();
@@ -2794,7 +2795,8 @@
   register int i;
 
   QUIT;
-  if (consing_since_gc > gc_cons_combined_threshold)
+  if (consing_since_gc > gc_cons_threshold
+      && consing_since_gc > gc_relative_threshold)
     Fgarbage_collect ();
 
   if (++lisp_eval_depth > max_lisp_eval_depth)