changeset 5525:2a6a8da4dd7c

Fix a bug in my last commit, symbol macros that expand to themselves hang. 2011-06-19 Aidan Kehoe <kehoea@parhasard.net> * cl-macs.el (cl-defsubst-expand): It is occasionally the case that the symbol naming the argument co-incides with the value that it is replacing; in that case, using the symbol macro is counterproductive and hangs XEmacs (as does analogous code in SBCL), so don't.
author Aidan Kehoe <kehoea@parhasard.net>
date Sun, 19 Jun 2011 19:47:13 +0100
parents e05d98bf9644
children 9a046b2e6494 b3b28406da8c
files lisp/ChangeLog lisp/cl-macs.el
diffstat 2 files changed, 11 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Sun Jun 19 19:15:52 2011 +0100
+++ b/lisp/ChangeLog	Sun Jun 19 19:47:13 2011 +0100
@@ -1,3 +1,11 @@
+2011-06-19  Aidan Kehoe  <kehoea@parhasard.net>
+
+	* cl-macs.el (cl-defsubst-expand):
+	It is occasionally the case that the symbol naming the argument
+	co-incides with the value that it is replacing; in that case,
+	using the symbol macro is counterproductive and hangs XEmacs (as
+	does analogous code in SBCL), so don't.
+
 2011-06-19  Aidan Kehoe  <kehoea@parhasard.net>
 
 	* behavior.el (enable-behavior):
--- a/lisp/cl-macs.el	Sun Jun 19 19:15:52 2011 +0100
+++ b/lisp/cl-macs.el	Sun Jun 19 19:47:13 2011 +0100
@@ -3223,7 +3223,9 @@
     (let* ((symbol-macros nil)
            (lets (mapcan #'(lambda (argn argv)
                              (if (or simple (cl-const-expr-p argv))
-                                 (progn (push (list argn argv) symbol-macros)
+                                 (progn (or (eq argn argv)
+					    (push (list argn argv)
+						  symbol-macros))
                                         (and unsafe (list (list argn argv))))
                                (list (list argn argv))))
                          argns argvs)))