Remove oldest messages from log when limit is hit, not newest.

This commit is contained in:
Nicholas Marriott 2009-11-20 06:33:26 +00:00
parent 2cea9433c2
commit 070e3b4178

View File

@ -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");