aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPhilipp Stephani2016-10-12 22:48:32 +0200
committerPhilipp Stephani2016-10-13 13:00:48 +0200
commit8ee95221c7112a763ae6ce41c7c58b3c32ece5fc (patch)
tree780fef85d03762e91361b962c1da769a821f4edd /src
parentb0f1d23ec482aa71a0ae0251f6f44f4b8d261259 (diff)
downloademacs-8ee95221c7112a763ae6ce41c7c58b3c32ece5fc.tar.gz
emacs-8ee95221c7112a763ae6ce41c7c58b3c32ece5fc.zip
Fix crash in evaluating functions
See Bug#24673 * src/eval.c (funcall_lambda): Fix crash for bogus functions such as (closure). * test/src/eval-tests.el (eval-tests--bug24673): Add test.
Diffstat (limited to 'src')
-rw-r--r--src/eval.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/eval.c b/src/eval.c
index 2fedbf377cf..a9bad2491fa 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -2841,9 +2841,11 @@ funcall_lambda (Lisp_Object fun, ptrdiff_t nargs,
2841 { 2841 {
2842 if (EQ (XCAR (fun), Qclosure)) 2842 if (EQ (XCAR (fun), Qclosure))
2843 { 2843 {
2844 fun = XCDR (fun); /* Drop `closure'. */ 2844 Lisp_Object cdr = XCDR (fun); /* Drop `closure'. */
2845 if (! CONSP (cdr))
2846 xsignal1 (Qinvalid_function, fun);
2847 fun = cdr;
2845 lexenv = XCAR (fun); 2848 lexenv = XCAR (fun);
2846 CHECK_LIST_CONS (fun, fun);
2847 } 2849 }
2848 else 2850 else
2849 lexenv = Qnil; 2851 lexenv = Qnil;