* src/eval.c (Fprogn): Do not check that BODY is a proper list.
This undoes the previous change. The check slows down the interpreter, and is not needed to prevent a crash. See <http://lists.gnu.org/archive/html/emacs-devel/2013-07/msg00693.html>. * doc/lispref/eval.texi (Special Forms): Mention 'lambda'. Also, say that non-well-formed expressions result in unspecified behavior, though Emacs will not crash.
This commit is contained in:
parent
249eea30ee
commit
53840e556e
5 changed files with 24 additions and 14 deletions
|
@ -1,3 +1,9 @@
|
|||
2013-07-24 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* eval.texi (Special Forms): Mention 'lambda'. Also, say that
|
||||
non-well-formed expressions result in unspecified behavior, though
|
||||
Emacs will not crash.
|
||||
|
||||
2013-07-22 Michael Albinus <michael.albinus@gmx.de>
|
||||
|
||||
* files.texi (Magic File Names): Add file-notify-add-watch,
|
||||
|
|
|
@ -432,6 +432,14 @@ do.
|
|||
and which are used without evaluation. Whether a particular argument is
|
||||
evaluated may depend on the results of evaluating other arguments.
|
||||
|
||||
If an expression's first symbol is that of a special form, the
|
||||
expression should follow the rules of that special form; otherwise,
|
||||
Emacs's behavior is not well-defined (though it will not crash). For
|
||||
example, @code{((lambda (x) x . 3) 4)} contains a subexpression that
|
||||
begins with @code{lambda} but is not a well-formed @code{lambda}
|
||||
expression, so Emacs may signal an error, or may return 3 or 4 or
|
||||
@code{nil}, or may behave in other ways.
|
||||
|
||||
Here is a list, in alphabetical order, of all of the special forms in
|
||||
Emacs Lisp with a reference to where each is described.
|
||||
|
||||
|
@ -463,6 +471,9 @@ Emacs Lisp with a reference to where each is described.
|
|||
@item interactive
|
||||
@pxref{Interactive Call}
|
||||
|
||||
@item lambda
|
||||
@pxref{Lambda Expressions}
|
||||
|
||||
@item let
|
||||
@itemx let*
|
||||
@pxref{Local Variables}
|
||||
|
|
8
etc/NEWS
8
etc/NEWS
|
@ -538,14 +538,6 @@ file using `set-file-extended-attributes'.
|
|||
** `visited-file-modtime' now returns -1 for nonexistent files.
|
||||
Formerly it returned a list (-1 LOW USEC PSEC), but this was ambiguous
|
||||
in the presence of files with negative time stamps.
|
||||
|
||||
** Special forms with implied progn now check for proper lists.
|
||||
Starting in Emacs 21.4, a special form with an implied progn of an
|
||||
improper list ignored the trailing value, treating it as nil. For
|
||||
example, (cond (t (message "hello") . "there")) ignored the "there".
|
||||
This inadvertent change to Emacs's behavior has been reverted, and
|
||||
Emacs now signals an error for these improper forms, as it did in
|
||||
version 21.3 and earlier.
|
||||
|
||||
* Lisp Changes in Emacs 24.4
|
||||
|
||||
|
|
|
@ -1,3 +1,10 @@
|
|||
2013-07-24 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* eval.c (Fprogn): Do not check that BODY is a proper list.
|
||||
This undoes the previous change. The check slows down the
|
||||
interpreter, and is not needed to prevent a crash. See
|
||||
<http://lists.gnu.org/archive/html/emacs-devel/2013-07/msg00693.html>.
|
||||
|
||||
2013-07-23 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* Makefile.in ($(etc)/DOC, temacs$(EXEEXT)): Ensure etc/ exists.
|
||||
|
|
|
@ -454,12 +454,6 @@ usage: (progn BODY...) */)
|
|||
body = XCDR (body);
|
||||
}
|
||||
|
||||
if (!NILP (body))
|
||||
{
|
||||
/* This can happen if functions like Fcond are the caller. */
|
||||
wrong_type_argument (Qlistp, body);
|
||||
}
|
||||
|
||||
UNGCPRO;
|
||||
return val;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue