From: Eli Zaretskii Date: Fri, 30 Apr 2021 11:22:29 +0000 (+0300) Subject: Fix the unexec build on MS-Windows X-Git-Tag: emacs-28.0.90~2664 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=ab7a61e0efd0684bc37a556d12f36521f9f61782;p=emacs.git Fix the unexec build on MS-Windows * src/buffer.c (init_buffer) [USE_MMAP_FOR_BUFFERS]: If dumped with unexec, be sure to map new memory also for the " prin1" buffer. For the reasons and discussion, see https://lists.gnu.org/archive/html/emacs-devel/2021-04/msg01401.html. --- diff --git a/src/buffer.c b/src/buffer.c index 8e33162989b..9e417bf555c 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -5390,17 +5390,24 @@ init_buffer (void) recorded by temacs, that cannot be used by the dumped Emacs. We map new memory for their text here. - Implementation note: the buffers we carry from temacs are: + Implementation notes: the buffers we carry from temacs are: " prin1", "*scratch*", " *Minibuf-0*", "*Messages*", and " *code-conversion-work*". They are created by init_buffer_once and init_window_once (which are not called - in the dumped Emacs), and by the first call to coding.c routines. */ + in the dumped Emacs), and by the first call to coding.c + routines. Since FOR_EACH_LIVE_BUFFER only walks the buffers + in Vbuffer_alist, any buffer we carry from temacs that is + not in the alist (a.k.a. "magic invisible buffers") should + be handled here explicitly. */ FOR_EACH_LIVE_BUFFER (tail, buffer) { struct buffer *b = XBUFFER (buffer); b->text->beg = NULL; enlarge_buffer_text (b, 0); } + /* The " prin1" buffer is not in Vbuffer_alist. */ + XBUFFER (Vprin1_to_string_buffer)->text->beg = NULL; + enlarge_buffer_text (XBUFFER (Vprin1_to_string_buffer), 0); } #endif /* USE_MMAP_FOR_BUFFERS */