From f291069afb7e8001b4f2a266849a010a8705bc33 Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Thu, 22 Sep 2005 09:39:01 +0000 Subject: [PATCH] (message_dolog): Add warning about GC and Lisp strings. (message2): Fix commentary. Ok to use alloca'ed memory. Still not ok to use Lisp string data (because of GC). (set_message): Add comment why GC cannot happen. --- src/xdisp.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/xdisp.c b/src/xdisp.c index e5b6980e033..29b75c42e6d 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -6752,7 +6752,10 @@ message_log_maybe_newline () terminated with a newline when NLFLAG is non-zero. MULTIBYTE, if nonzero, means interpret the contents of M as multibyte. This function calls low-level routines in order to bypass text property - hooks, etc. which might not be safe to run. */ + hooks, etc. which might not be safe to run. + + This may GC (insert may run before/after change hooks), + so the buffer M must NOT point to a Lisp string. */ void message_dolog (m, nbytes, nlflag, multibyte) @@ -6963,10 +6966,7 @@ message_log_check_duplicate (prev_bol, prev_bol_byte, this_bol, this_bol_byte) out any existing message, and let the mini-buffer text show through. - The buffer M must continue to exist until after the echo area gets - cleared or some other message gets displayed there. This means do - not pass text that is stored in a Lisp string; do not pass text in - a buffer that was alloca'd. */ + This may GC, so the buffer M must NOT point to a Lisp string. */ void message2 (m, nbytes, multibyte) @@ -8023,7 +8023,11 @@ truncate_message_1 (nchars, a2, a3, a4) If S is not null, set the message to the first LEN bytes of S. LEN zero means use the whole string. MULTIBYTE_P non-zero means S is - multibyte. Display the message multibyte in that case. */ + multibyte. Display the message multibyte in that case. + + Doesn't GC, as with_echo_area_buffer binds Qinhibit_modification_hooks + to t before calling set_message_1 (which calls insert). + */ void set_message (s, string, nbytes, multibyte_p) -- 2.39.5