=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/server-client.c,v retrieving revision 1.20 retrieving revision 1.21 diff -c -r1.20 -r1.21 *** src/usr.bin/tmux/server-client.c 2009/11/13 18:13:18 1.20 --- src/usr.bin/tmux/server-client.c 2009/11/18 13:16:33 1.21 *************** *** 1,4 **** ! /* $OpenBSD: server-client.c,v 1.20 2009/11/13 18:13:18 nicm Exp $ */ /* * Copyright (c) 2009 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: server-client.c,v 1.21 2009/11/18 13:16:33 nicm Exp $ */ /* * Copyright (c) 2009 Nicholas Marriott *************** *** 80,85 **** --- 80,86 ---- job_tree_init(&c->status_jobs); c->message_string = NULL; + ARRAY_INIT(&c->message_log); c->prompt_string = NULL; c->prompt_buffer = NULL; *************** *** 101,107 **** void server_client_lost(struct client *c) { ! u_int i; for (i = 0; i < ARRAY_LENGTH(&clients); i++) { if (ARRAY_ITEM(&clients, i) == c) --- 102,109 ---- void server_client_lost(struct client *c) { ! struct message_entry *msg; ! u_int i; for (i = 0; i < ARRAY_LENGTH(&clients); i++) { if (ARRAY_ITEM(&clients, i) == c) *************** *** 129,134 **** --- 131,141 ---- if (c->message_string != NULL) xfree(c->message_string); evtimer_del(&c->message_timer); + for (i = 0; i < ARRAY_LENGTH(&c->message_log); i++) { + msg = &ARRAY_ITEM(&c->message_log, i); + xfree(msg->msg); + } + ARRAY_FREE(&c->message_log); if (c->prompt_string != NULL) xfree(c->prompt_string);