diff options
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/ChangeLog | 6 | ||||
-rw-r--r-- | lisp/emacs-lisp/byte-opt.el | 7 |
2 files changed, 12 insertions, 1 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 843de781e06..50fd8376e45 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2000-11-14 Gerd Moellmann <gerd@gnu.org> + + * emacs-lisp/byte-opt.el (byte-compile-unfold-lambda): Don't + recursively optimize body because that can lead to infinite + recursion; see comment there. + 2000-11-13 Eli Zaretskii <eliz@is.elta.co.il> * faces.el (face-spec-set-match-display): Revert the change from diff --git a/lisp/emacs-lisp/byte-opt.el b/lisp/emacs-lisp/byte-opt.el index c3c8e677239..da695386604 100644 --- a/lisp/emacs-lisp/byte-opt.el +++ b/lisp/emacs-lisp/byte-opt.el @@ -340,7 +340,12 @@ (byte-compile-warn "Attempt to open-code `%s' with too many arguments" name)) form) - (setq body (mapcar 'byte-optimize-form body)) + + ;; The following leads to infinite recursion when loading a + ;; file containing `(defsubst f () (f))', and then trying to + ;; byte-compile that file. + ;(setq body (mapcar 'byte-optimize-form body))) + (let ((newform (if bindings (cons 'let (cons (nreverse bindings) body)) |