summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornicm <nicm@openbsd.org>2009-11-20 06:33:26 +0000
committernicm <nicm@openbsd.org>2009-11-20 06:33:26 +0000
commitb1db45f6df7dc97bf9fbb26442816819bc519a17 (patch)
tree8ee34c20135e0f44f645bff16bc92b236f8d6284
parentcorrect off-by-one in percent_expand(): we would fatal() when trying (diff)
downloadwireguard-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.c13
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");