]> git.eshelyaron.com Git - emacs.git/commitdiff
(message_dolog): Add warning about GC and Lisp strings.
authorKim F. Storm <storm@cua.dk>
Thu, 22 Sep 2005 09:39:01 +0000 (09:39 +0000)
committerKim F. Storm <storm@cua.dk>
Thu, 22 Sep 2005 09:39:01 +0000 (09:39 +0000)
(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

index e5b6980e03302dfdf017be4ad2ca9763de26208f..29b75c42e6db5da80e0ed6d77ec4531fb61395e8 100644 (file)
@@ -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)