diff options
Diffstat (limited to 'src/eval.c')
| -rw-r--r-- | src/eval.c | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/src/eval.c b/src/eval.c index 26d1ce967a7..56fe670f1b1 100644 --- a/src/eval.c +++ b/src/eval.c | |||
| @@ -807,18 +807,6 @@ usage: (defvar SYMBOL &optional INITVALUE DOCSTRING) */) | |||
| 807 | register Lisp_Object sym, tem, tail; | 807 | register Lisp_Object sym, tem, tail; |
| 808 | 808 | ||
| 809 | sym = Fcar (args); | 809 | sym = Fcar (args); |
| 810 | if (SYMBOL_CONSTANT_P (sym)) | ||
| 811 | { | ||
| 812 | /* For updward compatibility, allow (defvar :foo (quote :foo)). */ | ||
| 813 | tem = Fcar (Fcdr (args)); | ||
| 814 | if (! (CONSP (tem) | ||
| 815 | && EQ (XCAR (tem), Qquote) | ||
| 816 | && CONSP (XCDR (tem)) | ||
| 817 | && EQ (XCAR (XCDR (tem)), sym))) | ||
| 818 | error ("Constant symbol `%s' specified in defvar", | ||
| 819 | SDATA (SYMBOL_NAME (sym))); | ||
| 820 | } | ||
| 821 | |||
| 822 | tail = Fcdr (args); | 810 | tail = Fcdr (args); |
| 823 | if (!NILP (Fcdr (Fcdr (tail)))) | 811 | if (!NILP (Fcdr (Fcdr (tail)))) |
| 824 | error ("Too many arguments"); | 812 | error ("Too many arguments"); |
| @@ -826,6 +814,18 @@ usage: (defvar SYMBOL &optional INITVALUE DOCSTRING) */) | |||
| 826 | tem = Fdefault_boundp (sym); | 814 | tem = Fdefault_boundp (sym); |
| 827 | if (!NILP (tail)) | 815 | if (!NILP (tail)) |
| 828 | { | 816 | { |
| 817 | if (SYMBOL_CONSTANT_P (sym)) | ||
| 818 | { | ||
| 819 | /* For upward compatibility, allow (defvar :foo (quote :foo)). */ | ||
| 820 | Lisp_Object tem = Fcar (tail); | ||
| 821 | if (! (CONSP (tem) | ||
| 822 | && EQ (XCAR (tem), Qquote) | ||
| 823 | && CONSP (XCDR (tem)) | ||
| 824 | && EQ (XCAR (XCDR (tem)), sym))) | ||
| 825 | error ("Constant symbol `%s' specified in defvar", | ||
| 826 | SDATA (SYMBOL_NAME (sym))); | ||
| 827 | } | ||
| 828 | |||
| 829 | if (NILP (tem)) | 829 | if (NILP (tem)) |
| 830 | Fset_default (sym, Feval (Fcar (tail))); | 830 | Fset_default (sym, Feval (Fcar (tail))); |
| 831 | else | 831 | else |
| @@ -2094,7 +2094,8 @@ DEFUN ("eval", Feval, Seval, 1, 1, 0, | |||
| 2094 | return form; | 2094 | return form; |
| 2095 | 2095 | ||
| 2096 | QUIT; | 2096 | QUIT; |
| 2097 | if (consing_since_gc > gc_cons_combined_threshold) | 2097 | if (consing_since_gc > gc_cons_threshold |
| 2098 | && consing_since_gc > gc_relative_threshold) | ||
| 2098 | { | 2099 | { |
| 2099 | GCPRO1 (form); | 2100 | GCPRO1 (form); |
| 2100 | Fgarbage_collect (); | 2101 | Fgarbage_collect (); |
| @@ -2794,7 +2795,8 @@ usage: (funcall FUNCTION &rest ARGUMENTS) */) | |||
| 2794 | register int i; | 2795 | register int i; |
| 2795 | 2796 | ||
| 2796 | QUIT; | 2797 | QUIT; |
| 2797 | if (consing_since_gc > gc_cons_combined_threshold) | 2798 | if (consing_since_gc > gc_cons_threshold |
| 2799 | && consing_since_gc > gc_relative_threshold) | ||
| 2798 | Fgarbage_collect (); | 2800 | Fgarbage_collect (); |
| 2799 | 2801 | ||
| 2800 | if (++lisp_eval_depth > max_lisp_eval_depth) | 2802 | if (++lisp_eval_depth > max_lisp_eval_depth) |