=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/window.c,v retrieving revision 1.282 retrieving revision 1.283 diff -c -r1.282 -r1.283 *** src/usr.bin/tmux/window.c 2022/08/24 07:22:30 1.282 --- src/usr.bin/tmux/window.c 2023/01/06 07:09:27 1.283 *************** *** 1,4 **** ! /* $OpenBSD: window.c,v 1.282 2022/08/24 07:22:30 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: window.c,v 1.283 2023/01/06 07:09:27 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott *************** *** 66,71 **** --- 66,72 ---- struct window_pane_input_data { struct cmdq_item *item; u_int wp; + struct client_file *file; }; static struct window_pane *window_pane_create(struct window *, u_int, u_int, *************** *** 1533,1550 **** size_t len = EVBUFFER_LENGTH(buffer); wp = window_pane_find_by_id(cdata->wp); ! if (wp == NULL || closed || error != 0 || (c->flags & CLIENT_DEAD)) { if (wp == NULL) c->flags |= CLIENT_EXIT; ! ! evbuffer_drain(buffer, len); cmdq_continue(cdata->item); - server_client_unref(c); free(cdata); ! return; ! } ! input_parse_buffer(wp, buf, len); evbuffer_drain(buffer, len); } --- 1534,1549 ---- size_t len = EVBUFFER_LENGTH(buffer); wp = window_pane_find_by_id(cdata->wp); ! if (cdata->file != NULL && (wp == NULL || c->flags & CLIENT_DEAD)) { if (wp == NULL) c->flags |= CLIENT_EXIT; ! file_cancel(cdata->file); ! } else if (cdata->file == NULL || closed || error != 0) { cmdq_continue(cdata->item); server_client_unref(c); free(cdata); ! } else ! input_parse_buffer(wp, buf, len); evbuffer_drain(buffer, len); } *************** *** 1567,1575 **** cdata = xmalloc(sizeof *cdata); cdata->item = item; cdata->wp = wp->id; ! c->references++; - file_read(c, "-", window_pane_input_callback, cdata); return (0); } --- 1566,1573 ---- cdata = xmalloc(sizeof *cdata); cdata->item = item; cdata->wp = wp->id; ! cdata->file = file_read(c, "-", window_pane_input_callback, cdata); c->references++; return (0); }