diff options
author | Christopher Faylor <me@cgf.cx> | 2012-03-20 23:13:40 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2012-03-20 23:13:40 +0000 |
commit | 30fa1549395ca75b66472aa2039af0ff772b1c60 (patch) | |
tree | f3adcd570a2407f2b8567d874f9ab057ed8c44d2 /winsup/cygwin/dtable.cc | |
parent | c1c62a13681b8eb7e1d43785da464ec4954e0160 (diff) | |
download | newlib-30fa1549395ca75b66472aa2039af0ff772b1c60.zip newlib-30fa1549395ca75b66472aa2039af0ff772b1c60.tar.gz newlib-30fa1549395ca75b66472aa2039af0ff772b1c60.tar.bz2 |
* dtable.cc (set_std_handle): Call SetStdHandle with NULL if fd is closed.
(dtable::release): "Close" standard handle if appropriate.
* dcrt0.cc (dll_crt0_0): Fix minor switch formatting problem.
* fork.cc (frok::parent): Make minor comment indentation change.
Diffstat (limited to 'winsup/cygwin/dtable.cc')
-rw-r--r-- | winsup/cygwin/dtable.cc | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/winsup/cygwin/dtable.cc b/winsup/cygwin/dtable.cc index 7f414ac..69add31 100644 --- a/winsup/cygwin/dtable.cc +++ b/winsup/cygwin/dtable.cc @@ -65,10 +65,11 @@ dtable_init () void __stdcall set_std_handle (int fd) { + fhandler_base *fh = cygheap->fdtab[fd]; if (fd == 0) - SetStdHandle (std_consts[fd], cygheap->fdtab[fd]->get_handle ()); + SetStdHandle (std_consts[fd], fh ? fh->get_handle () : NULL); else if (fd <= 2) - SetStdHandle (std_consts[fd], cygheap->fdtab[fd]->get_output_handle ()); + SetStdHandle (std_consts[fd], fh ? fh->get_output_handle () : NULL); } int @@ -244,6 +245,8 @@ dtable::release (int fd) dec_need_fixup_before (); fds[fd]->refcnt (-1); fds[fd] = NULL; + if (fd <= 2) + set_std_handle (fd); } extern "C" int |