From 4fe53499c6055c17dcc84d85466ed46266381f36 Mon Sep 17 00:00:00 2001 From: Emmanuel Vadot Date: Tue, 15 Sep 2020 14:21:56 +0200 Subject: [PATCH] Invert test for EPOLLHUP and EPOLLIN If we have both bit sets (in case of ctrl+d for example) we first need to test EPOLLHUP first otherwise we will call abort. Signed-off-by: Emmanuel Vadot --- main.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/main.c b/main.c index e41c049..fd2aeb9 100644 --- a/main.c +++ b/main.c @@ -213,7 +213,13 @@ static void handle_tty(int ev) char data[256]; int len; - if (ev & EPOLLIN) { + if (ev & EPOLLHUP) { + epoll_ctl(term.fd, EPOLL_CTL_DEL, term.master_fd, NULL); + close(term.master_fd); + term.master_fd = -1; + if (!term.opt.linger) + term.die = true; + } else if (ev & EPOLLIN) { term.need_redraw = true; len = read(term.master_fd, data, sizeof(data)); assert(len); @@ -223,12 +229,6 @@ static void handle_tty(int ev) } else { tsm_vte_input(term.vte, data, len); } - } else if (ev & EPOLLHUP) { - epoll_ctl(term.fd, EPOLL_CTL_DEL, term.master_fd, NULL); - close(term.master_fd); - term.master_fd = -1; - if (!term.opt.linger) - term.die = true; } }