Handle NULL client (in config file) when showing a status message; also

copy the file when processing if-shell since it may be freed. GitHub
issue 3746.
This commit is contained in:
nicm
2023-11-14 15:59:49 +00:00
parent 1a14d6d2e1
commit 88fd1f00b8
2 changed files with 21 additions and 9 deletions

View File

@ -472,17 +472,26 @@ void
status_message_set(struct client *c, int delay, int ignore_styles,
int ignore_keys, const char *fmt, ...)
{
struct timeval tv;
va_list ap;
struct timeval tv;
va_list ap;
char *s;
va_start(ap, fmt);
xvasprintf(&s, fmt, ap);
va_end(ap);
log_debug("%s: %s", __func__, s);
if (c == NULL) {
server_add_message("message: %s", s);
free(s);
return;
}
status_message_clear(c);
status_push_screen(c);
va_start(ap, fmt);
xvasprintf(&c->message_string, fmt, ap);
va_end(ap);
server_add_message("%s message: %s", c->name, c->message_string);
c->message_string = s;
server_add_message("%s message: %s", c->name, s);
/*
* With delay -1, the display-time option is used; zero means wait for