This was causing crashes when non-interactive shells that read stdin, either source a file that dups stdin, or run an eval command that dups stdin:
$ bash <<< 'echo hi 9<&0' hi $ printf %s\\n 'echo hi 9<&0' > file; bash <<< '. ./file' Segmentation fault (core dumped) $ bash <<< 'eval "echo hi 9<&0"' Segmentation fault (core dumped) --- input.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/input.c b/input.c index 6eab9909..8c7756a9 100644 --- a/input.c +++ b/input.c @@ -359,7 +359,7 @@ duplicate_buffered_stream (int fd1, int fd2) buffers[fd2]->b_flag |= B_WASBASHINPUT; } - if (fd_is_bash_input (fd1) || (buffers[fd1] && (buffers[fd1]->b_flag & B_SHAREDBUF))) + if (buffers[fd2] && fd_is_bash_input (fd1) || (buffers[fd1] && (buffers[fd1]->b_flag & B_SHAREDBUF))) buffers[fd2]->b_flag |= B_SHAREDBUF; return (fd2); -- 2.40.1