=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/control.c,v retrieving revision 1.4 retrieving revision 1.5 diff -c -r1.4 -r1.5 *** src/usr.bin/tmux/control.c 2012/09/24 13:39:10 1.4 --- src/usr.bin/tmux/control.c 2013/03/22 15:49:55 1.5 *************** *** 1,4 **** ! /* $OpenBSD: control.c,v 1.4 2012/09/24 13:39:10 nicm Exp $ */ /* * Copyright (c) 2012 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: control.c,v 1.5 2013/03/22 15:49:55 nicm Exp $ */ /* * Copyright (c) 2012 Nicholas Marriott *************** *** 93,99 **** control_callback(struct client *c, int closed, unused void *data) { char *line, *cause; ! struct cmd_ctx ctx; struct cmd_list *cmdlist; if (closed) --- 93,99 ---- control_callback(struct client *c, int closed, unused void *data) { char *line, *cause; ! struct cmd_ctx *ctx; struct cmd_list *cmdlist; if (closed) *************** *** 108,129 **** break; } ! ctx.msgdata = NULL; ! ctx.cmdclient = NULL; ! ctx.curclient = c; ! ctx.error = control_msg_error; ! ctx.print = control_msg_print; ! ctx.info = control_msg_info; if (cmd_string_parse(line, &cmdlist, &cause) != 0) { control_write(c, "%%error in line \"%s\": %s", line, cause); free(cause); } else { ! cmd_list_exec(cmdlist, &ctx); cmd_list_free(cmdlist); } free(line); } --- 108,131 ---- break; } ! ctx = cmd_get_ctx(); ! ctx->msgdata = NULL; ! ctx->cmdclient = NULL; ! ctx->curclient = c; ! ctx->error = control_msg_error; ! ctx->print = control_msg_print; ! ctx->info = control_msg_info; if (cmd_string_parse(line, &cmdlist, &cause) != 0) { control_write(c, "%%error in line \"%s\": %s", line, cause); free(cause); } else { ! cmd_list_exec(cmdlist, ctx); cmd_list_free(cmdlist); } + cmd_free_ctx(ctx); free(line); }