diff lisp/bytecomp.el @ 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 4654c01af32b
children f0f1fd0d8486
line wrap: on
line diff
--- 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)