[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] /srv/bzr/emacs/emacs-23 r100065: * emacs-lisp/byte-opt.el
From: |
Andreas Schwab |
Subject: |
[Emacs-diffs] /srv/bzr/emacs/emacs-23 r100065: * emacs-lisp/byte-opt.el (byte-optimize-form-code-walker): Avoid |
Date: |
Mon, 27 Sep 2010 19:14:58 +0200 |
User-agent: |
Bazaar (2.0.3) |
------------------------------------------------------------
revno: 100065
committer: Andreas Schwab <address@hidden>
branch nick: emacs
timestamp: Mon 2010-09-27 19:14:58 +0200
message:
* emacs-lisp/byte-opt.el (byte-optimize-form-code-walker): Avoid
infinite recursion on erroneous lambda form. (Bug#7114)
modified:
lisp/ChangeLog
lisp/emacs-lisp/byte-opt.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog 2010-09-27 05:00:46 +0000
+++ b/lisp/ChangeLog 2010-09-27 17:14:58 +0000
@@ -1,3 +1,8 @@
+2010-09-27 Andreas Schwab <address@hidden>
+
+ * emacs-lisp/byte-opt.el (byte-optimize-form-code-walker): Avoid
+ infinite recursion on erroneous lambda form. (Bug#7114)
+
2010-09-27 Kenichi Handa <address@hidden>
* tar-mode.el (tar-header-block-tokenize): Decode filenames in
=== modified file 'lisp/emacs-lisp/byte-opt.el'
--- a/lisp/emacs-lisp/byte-opt.el 2010-01-13 08:35:10 +0000
+++ b/lisp/emacs-lisp/byte-opt.el 2010-09-27 17:14:58 +0000
@@ -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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] /srv/bzr/emacs/emacs-23 r100065: * emacs-lisp/byte-opt.el (byte-optimize-form-code-walker): Avoid,
Andreas Schwab <=