diff options
Diffstat (limited to 'src/eval.c')
| -rw-r--r-- | src/eval.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/eval.c b/src/eval.c index 1ce14ae94a6..6e964f6604b 100644 --- a/src/eval.c +++ b/src/eval.c | |||
| @@ -2033,7 +2033,9 @@ it is defines a macro. */) | |||
| 2033 | 2033 | ||
| 2034 | DEFUN ("eval", Feval, Seval, 1, 2, 0, | 2034 | DEFUN ("eval", Feval, Seval, 1, 2, 0, |
| 2035 | doc: /* Evaluate FORM and return its value. | 2035 | doc: /* Evaluate FORM and return its value. |
| 2036 | If LEXICAL is t, evaluate using lexical scoping. */) | 2036 | If LEXICAL is t, evaluate using lexical scoping. |
| 2037 | LEXICAL can also be an actual lexical environment, in the form of an | ||
| 2038 | alist mapping symbols to their value. */) | ||
| 2037 | (Lisp_Object form, Lisp_Object lexical) | 2039 | (Lisp_Object form, Lisp_Object lexical) |
| 2038 | { | 2040 | { |
| 2039 | ptrdiff_t count = SPECPDL_INDEX (); | 2041 | ptrdiff_t count = SPECPDL_INDEX (); |
| @@ -2146,11 +2148,10 @@ eval_sub (Lisp_Object form) | |||
| 2146 | 2148 | ||
| 2147 | /* Optimize for no indirection. */ | 2149 | /* Optimize for no indirection. */ |
| 2148 | fun = original_fun; | 2150 | fun = original_fun; |
| 2149 | if (SYMBOLP (fun) && !NILP (fun) | 2151 | if (!SYMBOLP (fun)) |
| 2150 | && (fun = XSYMBOL (fun)->function, SYMBOLP (fun))) | ||
| 2151 | fun = indirect_function (fun); | ||
| 2152 | else | ||
| 2153 | fun = Ffunction (Fcons (fun, Qnil)); | 2152 | fun = Ffunction (Fcons (fun, Qnil)); |
| 2153 | else if (!NILP (fun) && (fun = XSYMBOL (fun)->function, SYMBOLP (fun))) | ||
| 2154 | fun = indirect_function (fun); | ||
| 2154 | 2155 | ||
| 2155 | if (SUBRP (fun)) | 2156 | if (SUBRP (fun)) |
| 2156 | { | 2157 | { |