diff options
| author | Stefan Monnier | 2012-07-18 11:20:33 -0400 |
|---|---|---|
| committer | Stefan Monnier | 2012-07-18 11:20:33 -0400 |
| commit | 5fbc0409ac3c51baf18d43b00ed00b56acc1c74b (patch) | |
| tree | 6cef721f973317fa7523987e4dd97e9f5fe360a0 /src | |
| parent | eceb6feba42bebcb15d5dd0c60c9470ad7300309 (diff) | |
| download | emacs-5fbc0409ac3c51baf18d43b00ed00b56acc1c74b.tar.gz emacs-5fbc0409ac3c51baf18d43b00ed00b56acc1c74b.zip | |
* src/eval.c (Fdefvar): Don't check constants since we only set the var if
it's not yet defined anyway.
Fixes: debbugs:11904
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 3 | ||||
| -rw-r--r-- | src/eval.c | 12 |
2 files changed, 3 insertions, 12 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 42aff300ad6..b7e6b5b5fce 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,5 +1,8 @@ | |||
| 1 | 2012-07-18 Stefan Monnier <monnier@iro.umontreal.ca> | 1 | 2012-07-18 Stefan Monnier <monnier@iro.umontreal.ca> |
| 2 | 2 | ||
| 3 | * eval.c (Fdefvar): Don't check constants since we only set the var if | ||
| 4 | it's not yet defined anyway (bug#11904). | ||
| 5 | |||
| 3 | * lisp.h (last_undo_boundary): Declare new var. | 6 | * lisp.h (last_undo_boundary): Declare new var. |
| 4 | * keyboard.c (command_loop_1): Set it. | 7 | * keyboard.c (command_loop_1): Set it. |
| 5 | * cmds.c (Fself_insert_command): Use it to only remove boundaries that | 8 | * cmds.c (Fself_insert_command): Use it to only remove boundaries that |
diff --git a/src/eval.c b/src/eval.c index f16fdc6dd4c..da567e1e635 100644 --- a/src/eval.c +++ b/src/eval.c | |||
| @@ -691,18 +691,6 @@ usage: (defvar SYMBOL &optional INITVALUE DOCSTRING) */) | |||
| 691 | /* Do it before evaluating the initial value, for self-references. */ | 691 | /* Do it before evaluating the initial value, for self-references. */ |
| 692 | XSYMBOL (sym)->declared_special = 1; | 692 | XSYMBOL (sym)->declared_special = 1; |
| 693 | 693 | ||
| 694 | if (SYMBOL_CONSTANT_P (sym)) | ||
| 695 | { | ||
| 696 | /* For upward compatibility, allow (defvar :foo (quote :foo)). */ | ||
| 697 | Lisp_Object tem1 = Fcar (tail); | ||
| 698 | if (! (CONSP (tem1) | ||
| 699 | && EQ (XCAR (tem1), Qquote) | ||
| 700 | && CONSP (XCDR (tem1)) | ||
| 701 | && EQ (XCAR (XCDR (tem1)), sym))) | ||
| 702 | error ("Constant symbol `%s' specified in defvar", | ||
| 703 | SDATA (SYMBOL_NAME (sym))); | ||
| 704 | } | ||
| 705 | |||
| 706 | if (NILP (tem)) | 694 | if (NILP (tem)) |
| 707 | Fset_default (sym, eval_sub (Fcar (tail))); | 695 | Fset_default (sym, eval_sub (Fcar (tail))); |
| 708 | else | 696 | else |