aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--status.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/status.c b/status.c
index d728757a..cc589dd1 100644
--- a/status.c
+++ b/status.c
@@ -1,4 +1,4 @@
-/* $Id: status.c,v 1.134 2009-11-22 00:09:42 tcunha Exp $ */
+/* $Id: status.c,v 1.135 2009-11-22 00:10:39 tcunha 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");