ffbbfc71ad
Obtained from: http://sourceforge.net/tracker/index.php?func=detail&aid=1279867&group_id=2208&atid=102208
32 lines
967 B
C
32 lines
967 B
C
--- src/speedy_main.c 2005/08/31 19:56:57 1.1
|
|
+++ src/speedy_main.c 2005/08/31 19:57:42
|
|
@@ -299,6 +299,7 @@
|
|
/* Copy streams */
|
|
while (1) {
|
|
/* Do reads/writes */
|
|
+ int close_stdout_delayed = 0;
|
|
for (i = 0; i < NUMFDS; ++i) {
|
|
register CopyBuf *b = cb + i;
|
|
int do_read = my_canread(b) &&
|
|
@@ -346,10 +347,17 @@
|
|
/* Try to close files now, so we can wake up the backend
|
|
* and do more I/O before dropping into select
|
|
*/
|
|
- if (!do_read && !do_write)
|
|
- try_close(b);
|
|
- }
|
|
- }
|
|
+ if (!do_read && !do_write) {
|
|
+ if (i == 1)
|
|
+ /* delay closing STDOUT until all the other fds are closed */
|
|
+ close_stdout_delayed = 1;
|
|
+ else
|
|
+ try_close(b);
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ if (close_stdout_delayed)
|
|
+ try_close(cb+1);
|
|
|
|
/* All done with reads/writes after backend exited */
|
|
if (backend_exited) {
|