Mercurial > hg > xemacs-beta
comparison lisp/cl-macs.el @ 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 | 810b77562486 |
children | b908c7265a2b |
comparison
equal
deleted
inserted
replaced
5524:e05d98bf9644 | 5525:2a6a8da4dd7c |
---|---|
3221 (if (cl-simple-exprs-p argvs) | 3221 (if (cl-simple-exprs-p argvs) |
3222 (setq simple t)) | 3222 (setq simple t)) |
3223 (let* ((symbol-macros nil) | 3223 (let* ((symbol-macros nil) |
3224 (lets (mapcan #'(lambda (argn argv) | 3224 (lets (mapcan #'(lambda (argn argv) |
3225 (if (or simple (cl-const-expr-p argv)) | 3225 (if (or simple (cl-const-expr-p argv)) |
3226 (progn (push (list argn argv) symbol-macros) | 3226 (progn (or (eq argn argv) |
3227 (push (list argn argv) | |
3228 symbol-macros)) | |
3227 (and unsafe (list (list argn argv)))) | 3229 (and unsafe (list (list argn argv)))) |
3228 (list (list argn argv)))) | 3230 (list (list argn argv)))) |
3229 argns argvs))) | 3231 argns argvs))) |
3230 `(let ,lets | 3232 `(let ,lets |
3231 (symbol-macrolet | 3233 (symbol-macrolet |