patch 8.2.3006: crash when echoing a value very early
Problem: Crash when echoing a value very early. (Naruhiko Nishino)
Solution: Do not use a NUL to truncate the message, make a copy.
(closes #8388)
diff --git a/src/message.c b/src/message.c
index f2fe23b..cb713d7 100644
--- a/src/message.c
+++ b/src/message.c
@@ -2751,19 +2751,21 @@
if (*p != NUL && !(silent_mode && p_verbose == 0))
{
- int c = -1;
+ char_u *tofree = NULL;
if (maxlen > 0 && STRLEN(p) > (size_t)maxlen)
{
- c = p[maxlen];
- p[maxlen] = 0;
+ tofree = vim_strnsave(p, (size_t)maxlen);
+ p = tofree;
}
- if (info_message)
- mch_msg((char *)p);
- else
- mch_errmsg((char *)p);
- if (c != -1)
- p[maxlen] = c;
+ if (p != NULL)
+ {
+ if (info_message)
+ mch_msg((char *)p);
+ else
+ mch_errmsg((char *)p);
+ vim_free(tofree);
+ }
}
msg_didout = TRUE; // assume that line is not empty