* 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.
This commit is contained in:
parent
c1c62a1368
commit
30fa154939
@ -1,3 +1,11 @@
|
|||||||
|
2012-03-20 Christopher Faylor <me.cygwin2012@cgf.cx>
|
||||||
|
|
||||||
|
* 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.
|
||||||
|
|
||||||
2012-03-20 Corinna Vinschen <corinna@vinschen.de>
|
2012-03-20 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
* syscalls.cc (lseek): Fix debug output.
|
* syscalls.cc (lseek): Fix debug output.
|
||||||
|
@ -744,13 +744,13 @@ dll_crt0_0 ()
|
|||||||
cygwin_user_h = child_proc_info->user_h;
|
cygwin_user_h = child_proc_info->user_h;
|
||||||
switch (child_proc_info->type)
|
switch (child_proc_info->type)
|
||||||
{
|
{
|
||||||
case _CH_FORK:
|
case _CH_FORK:
|
||||||
fork_info->handle_fork ();
|
fork_info->handle_fork ();
|
||||||
break;
|
break;
|
||||||
case _CH_SPAWN:
|
case _CH_SPAWN:
|
||||||
case _CH_EXEC:
|
case _CH_EXEC:
|
||||||
spawn_info->handle_spawn ();
|
spawn_info->handle_spawn ();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,10 +65,11 @@ dtable_init ()
|
|||||||
void __stdcall
|
void __stdcall
|
||||||
set_std_handle (int fd)
|
set_std_handle (int fd)
|
||||||
{
|
{
|
||||||
|
fhandler_base *fh = cygheap->fdtab[fd];
|
||||||
if (fd == 0)
|
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)
|
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
|
int
|
||||||
@ -244,6 +245,8 @@ dtable::release (int fd)
|
|||||||
dec_need_fixup_before ();
|
dec_need_fixup_before ();
|
||||||
fds[fd]->refcnt (-1);
|
fds[fd]->refcnt (-1);
|
||||||
fds[fd] = NULL;
|
fds[fd] = NULL;
|
||||||
|
if (fd <= 2)
|
||||||
|
set_std_handle (fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" int
|
extern "C" int
|
||||||
|
@ -354,14 +354,14 @@ frok::parent (volatile char * volatile stack_here)
|
|||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
hchild = NULL;
|
hchild = NULL;
|
||||||
rc = CreateProcessW (myself->progname, /* image to run */
|
rc = CreateProcessW (myself->progname, /* image to run */
|
||||||
myself->progname, /* what we send in arg0 */
|
myself->progname, /* what we send in arg0 */
|
||||||
&sec_none_nih,
|
&sec_none_nih,
|
||||||
&sec_none_nih,
|
&sec_none_nih,
|
||||||
TRUE, /* inherit handles from parent */
|
TRUE, /* inherit handles from parent */
|
||||||
c_flags,
|
c_flags,
|
||||||
NULL, /* environment filled in later */
|
NULL, /* environment filled in later */
|
||||||
0, /* use current drive/directory */
|
0, /* use current drive/directory */
|
||||||
&si,
|
&si,
|
||||||
&pi);
|
&pi);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user