Patch from Vladimir N. Oleynik:

On Wed Aug 18, 2004 at 06:52:57PM +0800, Matt Johnston wrote:
> I've come across some strange-seeming behaviour when running programs
> under Busybox (1.0.0-rc3) ash. If the child process sets stdin to be
> non-blocking and then exits, the parent ash will also exit. A quick strace
> shows that a subsequent read() from stdin returns EAGAIN (as would be
> expected):

Thanks!
Patch attached.


--w
vodz
diff --git a/shell/ash.c b/shell/ash.c
index 6d1dc60..6c6c286 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -6062,7 +6062,7 @@
 			}
 			goto retry;
 		}
-		if(nr < 0) {
+		if(nr < 0 && errno == 0) {
 			/* Ctrl+D presend */
 			nr = 0;
 		}