changeset 5568:b039c0f018b8

Error if byte-compiling a form hasn't wrapped byte-compile-inbuffer. lisp/ChangeLog addition: 2011-09-09 Aidan Kehoe <kehoea@parhasard.net> * bytecomp.el (byte-compile-from-buffer): If compiling a form has changed the current buffer (that is, some eval-when-compile form hasn't done save-excursion when appropriate), error and exit; we can't guarantee we'll give useful code in that context. See http://mid.gmane.org/20110909110831.GD2875@acm.acm and related discussion.
author Aidan Kehoe <kehoea@parhasard.net>
date Fri, 09 Sep 2011 22:50:31 +0100
parents 3bc58dc9d688
children d19b6e3bdf91
files lisp/ChangeLog lisp/bytecomp.el
diffstat 2 files changed, 15 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Wed Sep 07 21:21:36 2011 +0100
+++ b/lisp/ChangeLog	Fri Sep 09 22:50:31 2011 +0100
@@ -1,3 +1,13 @@
+2011-09-09  Aidan Kehoe  <kehoea@parhasard.net>
+
+	* bytecomp.el (byte-compile-from-buffer):
+	If compiling a form has changed the current buffer (that is, some
+	eval-when-compile form hasn't done save-excursion when
+	appropriate), error and exit; we can't guarantee we'll give useful
+	code in that context. See
+	http://mid.gmane.org/20110909110831.GD2875@acm.acm and related
+	discussion. 
+
 2011-09-07  Aidan Kehoe  <kehoea@parhasard.net>
 
 	* simple.el (transpose-subr):
--- a/lisp/bytecomp.el	Wed Sep 07 21:21:36 2011 +0100
+++ b/lisp/bytecomp.el	Fri Sep 09 22:50:31 2011 +0100
@@ -1864,7 +1864,11 @@
 			       (looking-at ";"))
 		   (forward-line 1))
 		 (not (eobp)))
-	  (byte-compile-file-form (read byte-compile-inbuffer)))
+	  (byte-compile-file-form (read byte-compile-inbuffer))
+          (or (eq byte-compile-inbuffer (current-buffer))
+              (error 'invalid-state 
+                     "byte compiling didn't save-excursion appropriately"
+                     (current-buffer))))
 
 	;; Compile pending forms at end of file.
 	(byte-compile-flush-pending)