emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] trunk r113521: * src/eval.c (Fprogn): Do not check that BO


From: Paul Eggert
Subject: [Emacs-diffs] trunk r113521: * src/eval.c (Fprogn): Do not check that BODY is a proper list.
Date: Wed, 24 Jul 2013 06:21:14 +0000
User-agent: Bazaar (2.6b2)

------------------------------------------------------------
revno: 113521
revision-id: address@hidden
parent: address@hidden
committer: Paul Eggert <address@hidden>
branch nick: trunk
timestamp: Wed 2013-07-24 07:21:07 +0100
message:
  * 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.
modified:
  doc/lispref/ChangeLog          changelog-20091113204419-o5vbwnq5f7feedwu-6155
  doc/lispref/eval.texi          eval.texi-20091113204419-o5vbwnq5f7feedwu-6178
  etc/NEWS                       news-20100311060928-aoit31wvzf25yr1z-1
  src/ChangeLog                  changelog-20091113204419-o5vbwnq5f7feedwu-1438
  src/eval.c                     eval.c-20091113204419-o5vbwnq5f7feedwu-237
=== modified file 'doc/lispref/ChangeLog'
--- a/doc/lispref/ChangeLog     2013-07-22 09:19:00 +0000
+++ b/doc/lispref/ChangeLog     2013-07-24 06:21:07 +0000
@@ -1,3 +1,9 @@
+2013-07-24  Paul Eggert  <address@hidden>
+
+       * 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  <address@hidden>
 
        * files.texi (Magic File Names): Add file-notify-add-watch,

=== modified file 'doc/lispref/eval.texi'
--- a/doc/lispref/eval.texi     2013-01-01 09:11:05 +0000
+++ b/doc/lispref/eval.texi     2013-07-24 06:21:07 +0000
@@ -432,6 +432,14 @@
 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
address@hidden, 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 @@
 @item interactive
 @pxref{Interactive Call}
 
address@hidden lambda
address@hidden Expressions}
+
 @item let
 @itemx let*
 @pxref{Local Variables}

=== modified file 'etc/NEWS'
--- a/etc/NEWS  2013-07-23 07:22:16 +0000
+++ b/etc/NEWS  2013-07-24 06:21:07 +0000
@@ -538,14 +538,6 @@
 ** `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
 

=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2013-07-23 23:00:43 +0000
+++ b/src/ChangeLog     2013-07-24 06:21:07 +0000
@@ -1,3 +1,10 @@
+2013-07-24  Paul Eggert  <address@hidden>
+
+       * 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  <address@hidden>
 
        * Makefile.in ($(etc)/DOC, temacs$(EXEEXT)): Ensure etc/ exists.

=== modified file 'src/eval.c'
--- a/src/eval.c        2013-07-23 07:22:16 +0000
+++ b/src/eval.c        2013-07-24 06:21:07 +0000
@@ -454,12 +454,6 @@
       body = XCDR (body);
     }
 
-  if (!NILP (body))
-    {
-      /* This can happen if functions like Fcond are the caller.  */
-      wrong_type_argument (Qlistp, body);
-    }
-
   UNGCPRO;
   return val;
 }


reply via email to

[Prev in Thread] Current Thread [Next in Thread]