* emacs-lisp/byte-opt.el (byte-optimize-form-code-walker): Avoid

infinite recursion on erroneous lambda form.  (Bug#7114)
This commit is contained in:
Andreas Schwab 2010-09-27 19:14:58 +02:00
parent 789af3cd80
commit c19f76a18b
2 changed files with 10 additions and 3 deletions

View file

@ -1,3 +1,8 @@
2010-09-27 Andreas Schwab <schwab@linux-m68k.org>
* emacs-lisp/byte-opt.el (byte-optimize-form-code-walker): Avoid
infinite recursion on erroneous lambda form. (Bug#7114)
2010-09-27 Kenichi Handa <handa@m17n.org>
* tar-mode.el (tar-header-block-tokenize): Decode filenames in

View file

@ -381,9 +381,11 @@
form))
((or (byte-code-function-p fn)
(eq 'lambda (car-safe fn)))
(byte-optimize-form-code-walker
(byte-compile-unfold-lambda form)
for-effect))
(let ((newform (byte-compile-unfold-lambda form)))
(if (eq newform form)
;; Some error occured, avoid infinite recursion
form
(byte-optimize-form-code-walker newform for-effect))))
((memq fn '(let let*))
;; recursively enter the optimizer for the bindings and body
;; of a let or let*. This for depth-firstness: forms that