# HG changeset patch # User Aidan Kehoe # Date 1308509233 -3600 # Node ID 2a6a8da4dd7c1ab2c8455e82a4901ca853db1790 # Parent e05d98bf96448771d989af1b71dfc94b0be75b14 Fix a bug in my last commit, symbol macros that expand to themselves hang. 2011-06-19 Aidan Kehoe * 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. diff -r e05d98bf9644 -r 2a6a8da4dd7c lisp/ChangeLog --- 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 + + * 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 * behavior.el (enable-behavior): diff -r e05d98bf9644 -r 2a6a8da4dd7c lisp/cl-macs.el --- 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)))