| Date: Thu, 30 Apr 2020 22:12:50 +0200
fix race condition between sigwinch and sigchld
sigwinch died if it tries to set the window size
to a file descriptor of an exited child. Thus,
we just ignore this error in that situation.
Diffstat:
M scroll.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
--- |
| @@ -96,8 +96,11 @@ sigwinch(int sig)
if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws) == -1)
die("ioctl:");
- if (ioctl(mfd, TIOCSWINSZ, &ws) == -1)
+ if (ioctl(mfd, TIOCSWINSZ, &ws) == -1) {
+ if (errno == EBADF) /* child already exited */
+ return;
die("ioctl:");
+ }
kill(-child, SIGWINCH);
doredraw = true;
} |