emacs-bug-tracker
[Top][All Lists]
Advanced

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

[debbugs-tracker] bug#15814: closed (24.3.50; Signal error on malformed


From: GNU bug Tracking System
Subject: [debbugs-tracker] bug#15814: closed (24.3.50; Signal error on malformed bindings in `cl-symbol-macrolet' (patch))
Date: Thu, 07 Nov 2013 04:39:02 +0000

Your message dated Wed, 06 Nov 2013 23:38:33 -0500
with message-id <address@hidden>
and subject line Re: bug#15814: 24.3.50; Signal error on malformed bindings in 
`cl-symbol-macrolet' (patch)
has caused the debbugs.gnu.org bug report #15814,
regarding 24.3.50; Signal error on malformed bindings in `cl-symbol-macrolet' 
(patch)
to be marked as done.

(If you believe you have received this mail in error, please contact
address@hidden)


-- 
15814: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=15814
GNU Bug Tracking System
Contact address@hidden with problems
--- Begin Message --- Subject: 24.3.50; Signal error on malformed bindings in `cl-symbol-macrolet' (patch) Date: Tue, 05 Nov 2013 15:40:22 -0500 User-agent: Gnus/5.130007 (Ma Gnus v0.7) Emacs/24.3.50 (gnu/linux)
`cl-symbol-macrolet' silently accepts both of the following forms:

(cl-symbol-macrolet ((foo bar baz) ...) ...)
(cl-symbol-macrolet ((foo) ...) ...)

In the former case, baz is ignored; in the latter case, foo is bound to
nil.

According to the CL docs, neither of these is valid.  (Not to mention,
they are both errors in Common Lisp.)  The attached patch asserts
properly formed bindings.

I checked the Emacs source to make sure there's no code in there relying
on this behavior.

>From d6feb1195b8dc8f204d49761bfa828facbb4ba57 Mon Sep 17 00:00:00 2001
From: Nathan Trapuzzano <address@hidden>
Date: Tue, 5 Nov 2013 14:36:32 -0500
Subject: [PATCH] Signal error with malformed bindings in cl-symbol-macrolet.

---
 lisp/ChangeLog             | 5 +++++
 lisp/emacs-lisp/cl-macs.el | 2 ++
 2 files changed, 7 insertions(+)

diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 828fcda..a4ae0ca 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,8 @@
+2013-11-05  Nathan Trapuzzano  <address@hidden>
+
+       * emacs-lisp/cl-macs.el (cl-symbol-macrolet): Signal error with
+       malformed bindings form.
+
 2013-11-05  Eli Zaretskii  <address@hidden>
 
        * international/quail.el (quail-help): Be more explicit about the
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el
index 60fdc09..1e277f7 100644
--- a/lisp/emacs-lisp/cl-macs.el
+++ b/lisp/emacs-lisp/cl-macs.el
@@ -1988,6 +1988,8 @@ by EXPANSION, and (setq NAME ...) will act like (setf 
EXPANSION ...).
        (cl-symbol-macrolet ,(cdr bindings) ,@body)))
    ((null bindings) (macroexp-progn body))
    (t
+    (cl-assert (and (cdar bindings) (null (cl-cddar bindings))) nil
+              "Malformed `cl-symbol-macrolet' binding: %S" (car bindings))
     (let ((previous-macroexpand (symbol-function 'macroexpand)))
       (unwind-protect
           (progn
-- 
1.8.4.2


--- End Message ---
--- Begin Message --- Subject: Re: bug#15814: 24.3.50; Signal error on malformed bindings in `cl-symbol-macrolet' (patch) Date: Wed, 06 Nov 2013 23:38:33 -0500 User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux)
> I think I understand what you want.  This patch uses
> macroexp--warn-and-return.

Perfect.  Installed.

> I'll try to move the checks in bytecomp.el/cconv.el later.

Thanks, no hurry.


        Stefan


--- End Message ---

reply via email to

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