diff options
Diffstat (limited to 'src/eval.c')
| -rw-r--r-- | src/eval.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/eval.c b/src/eval.c index eafb9e84a65..f5dd69ff057 100644 --- a/src/eval.c +++ b/src/eval.c | |||
| @@ -571,18 +571,21 @@ If INITVALUE is missing, SYMBOL's value is not set.") | |||
| 571 | (args) | 571 | (args) |
| 572 | Lisp_Object args; | 572 | Lisp_Object args; |
| 573 | { | 573 | { |
| 574 | register Lisp_Object sym, tem; | 574 | register Lisp_Object sym, tem, tail; |
| 575 | 575 | ||
| 576 | sym = Fcar (args); | 576 | sym = Fcar (args); |
| 577 | tem = Fcdr (args); | 577 | tail = Fcdr (args); |
| 578 | if (!NILP (tem)) | 578 | if (!NILP (Fcdr (Fcdr (tail)))) |
| 579 | error ("too many arguments"); | ||
| 580 | |||
| 581 | if (!NILP (tail)) | ||
| 579 | { | 582 | { |
| 580 | tem = Fdefault_boundp (sym); | 583 | tem = Fdefault_boundp (sym); |
| 581 | if (NILP (tem)) | 584 | if (NILP (tem)) |
| 582 | Fset_default (sym, Feval (Fcar (Fcdr (args)))); | 585 | Fset_default (sym, Feval (Fcar (Fcdr (args)))); |
| 583 | } | 586 | } |
| 584 | tem = Fcar (Fcdr (Fcdr (args))); | 587 | tail = Fcdr (Fcdr (args)); |
| 585 | if (!NILP (tem)) | 588 | if (!NILP (Fcar (tail))) |
| 586 | { | 589 | { |
| 587 | if (!NILP (Vpurify_flag)) | 590 | if (!NILP (Vpurify_flag)) |
| 588 | tem = Fpurecopy (tem); | 591 | tem = Fpurecopy (tem); |
| @@ -612,6 +615,9 @@ it would override the user's choice.") | |||
| 612 | register Lisp_Object sym, tem; | 615 | register Lisp_Object sym, tem; |
| 613 | 616 | ||
| 614 | sym = Fcar (args); | 617 | sym = Fcar (args); |
| 618 | if (!NILP (Fcdr (Fcdr (Fcdr (args))))) | ||
| 619 | error ("too many arguments"); | ||
| 620 | |||
| 615 | Fset_default (sym, Feval (Fcar (Fcdr (args)))); | 621 | Fset_default (sym, Feval (Fcar (Fcdr (args)))); |
| 616 | tem = Fcar (Fcdr (Fcdr (args))); | 622 | tem = Fcar (Fcdr (Fcdr (args))); |
| 617 | if (!NILP (tem)) | 623 | if (!NILP (tem)) |