diff options
| author | Philipp Stephani | 2016-10-12 22:48:32 +0200 |
|---|---|---|
| committer | Philipp Stephani | 2016-10-13 13:03:31 +0200 |
| commit | ceb46f002145e986c944b2423404535019b7e62b (patch) | |
| tree | 9db84af79ae0f3056bc502a25abb48ad781d42f9 /src/eval.c | |
| parent | d8374c4e95d6b2a0e839b3b49b12225222e8c721 (diff) | |
| download | emacs-ceb46f002145e986c944b2423404535019b7e62b.tar.gz emacs-ceb46f002145e986c944b2423404535019b7e62b.zip | |
Fix crash in evaluating functions
See Bug#24673
* src/eval.c (funcall_lambda): Fix crash for bogus functions such
as (closure).
Diffstat (limited to 'src/eval.c')
| -rw-r--r-- | src/eval.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/eval.c b/src/eval.c index 13a41a2ae20..b94712d4579 100644 --- a/src/eval.c +++ b/src/eval.c | |||
| @@ -2825,9 +2825,11 @@ funcall_lambda (Lisp_Object fun, ptrdiff_t nargs, | |||
| 2825 | { | 2825 | { |
| 2826 | if (EQ (XCAR (fun), Qclosure)) | 2826 | if (EQ (XCAR (fun), Qclosure)) |
| 2827 | { | 2827 | { |
| 2828 | fun = XCDR (fun); /* Drop `closure'. */ | 2828 | Lisp_Object cdr = XCDR (fun); /* Drop `closure'. */ |
| 2829 | if (! CONSP (cdr)) | ||
| 2830 | xsignal1 (Qinvalid_function, fun); | ||
| 2831 | fun = cdr; | ||
| 2829 | lexenv = XCAR (fun); | 2832 | lexenv = XCAR (fun); |
| 2830 | CHECK_LIST_CONS (fun, fun); | ||
| 2831 | } | 2833 | } |
| 2832 | else | 2834 | else |
| 2833 | lexenv = Qnil; | 2835 | lexenv = Qnil; |