diff options
author | 2009-11-20 06:33:26 +0000 | |
---|---|---|
committer | 2009-11-20 06:33:26 +0000 | |
commit | b1db45f6df7dc97bf9fbb26442816819bc519a17 (patch) | |
tree | 8ee34c20135e0f44f645bff16bc92b236f8d6284 | |
parent | correct off-by-one in percent_expand(): we would fatal() when trying (diff) | |
download | wireguard-openbsd-b1db45f6df7dc97bf9fbb26442816819bc519a17.tar.xz wireguard-openbsd-b1db45f6df7dc97bf9fbb26442816819bc519a17.zip |
Remove oldest messages from log when limit is hit, not newest.
-rw-r--r-- | usr.bin/tmux/status.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/usr.bin/tmux/status.c b/usr.bin/tmux/status.c index ad65977d296..66e33d9b00d 100644 --- a/usr.bin/tmux/status.c +++ b/usr.bin/tmux/status.c @@ -1,4 +1,4 @@ -/* $OpenBSD: status.c,v 1.49 2009/11/19 21:30:53 nicm Exp $ */ +/* $OpenBSD: status.c,v 1.50 2009/11/20 06:33:26 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> @@ -650,10 +650,13 @@ status_message_set(struct client *c, const char *fmt, ...) limit = 0; else limit = options_get_number(&s->options, "message-limit"); - for (i = ARRAY_LENGTH(&c->message_log); i > limit; i--) { - msg = &ARRAY_ITEM(&c->message_log, i - 1); - xfree(msg->msg); - ARRAY_REMOVE(&c->message_log, i - 1); + if (ARRAY_LENGTH(&c->message_log) > limit) { + limit = ARRAY_LENGTH(&c->message_log) - limit; + for (i = 0; i < limit; i++) { + msg = &ARRAY_FIRST(&c->message_log); + xfree(msg->msg); + ARRAY_REMOVE(&c->message_log, 0); + } } delay = options_get_number(&c->session->options, "display-time"); |