emacs-diffs
[Top][All Lists]
Advanced

[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


reply via email to

[Prev in Thread] Current Thread [Next in Thread]