mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-01-19 21:09:22 +08:00
* debug.cc (add_handle): Issue warning on attempts to add the same handle more
than once. * fhandler_tty.cc (fhandler_tty_slave::open): Protect some handles. (fhandler_tty_common::close): Use proper name when closing handles. (fhandler_pty_master::close): Don't close to_slave or from_slave since they've already been closed earlier in the function. * sigproc.cc (proc_subproc): Don't protect vchild->hProcess. Expect that the caller will do this, instead. * tty.cc (tty_list::terminate): Use proper name when closing handles. (tty::make_pipes): Protect some handles.
This commit is contained in:
parent
166b2571ce
commit
92e1969051
@ -1,3 +1,16 @@
|
||||
Mon Oct 16 21:36:57 2000 Christopher Faylor <cgf@cygnus.com>
|
||||
|
||||
* debug.cc (add_handle): Issue warning on attempts to add the same
|
||||
handle more than once.
|
||||
* fhandler_tty.cc (fhandler_tty_slave::open): Protect some handles.
|
||||
(fhandler_tty_common::close): Use proper name when closing handles.
|
||||
(fhandler_pty_master::close): Don't close to_slave or from_slave since
|
||||
they've already been closed earlier in the function.
|
||||
* sigproc.cc (proc_subproc): Don't protect vchild->hProcess. Expect
|
||||
that the caller will do this, instead.
|
||||
* tty.cc (tty_list::terminate): Use proper name when closing handles.
|
||||
(tty::make_pipes): Protect some handles.
|
||||
|
||||
Mon Oct 16 18:37:22 2000 Christopher Faylor <cgf@cygnus.com>
|
||||
|
||||
* Makefile.in: Remove some obsolete stuff.
|
||||
|
@ -246,8 +246,14 @@ add_handle (const char *func, int ln, HANDLE h, const char *name)
|
||||
handle_list *hl;
|
||||
lock_debug ();
|
||||
|
||||
if (find_handle (h))
|
||||
if ((hl = find_handle (h)))
|
||||
{
|
||||
system_printf ("%s:%d - multiple attempts to add handle %s<%p>", func,
|
||||
ln, name, h);
|
||||
system_printf (" previously allocated by %s:%d(%s<%p>)",
|
||||
hl->func, hl->ln, hl->name, hl->h);
|
||||
goto out; /* Already did this once */
|
||||
}
|
||||
|
||||
if ((hl = newh()) == NULL)
|
||||
{
|
||||
|
@ -503,6 +503,7 @@ fhandler_tty_slave::open (const char *, int flags, mode_t)
|
||||
return 0;
|
||||
}
|
||||
set_io_handle (nh);
|
||||
ProtectHandle1 (nh, from_pty);
|
||||
termios_printf ("duplicated from_master %p->%p from tty_owner %p",
|
||||
get_ttyp ()->from_master, nh, tty_owner);
|
||||
if (!DuplicateHandle (tty_owner, get_ttyp ()->to_master, hMainProc, &nh, 0, TRUE,
|
||||
@ -513,6 +514,7 @@ fhandler_tty_slave::open (const char *, int flags, mode_t)
|
||||
return 0;
|
||||
}
|
||||
set_output_handle (nh);
|
||||
ProtectHandle1 (nh, to_pty);
|
||||
CloseHandle (tty_owner);
|
||||
|
||||
termios_printf("tty%d opened", ttynum);
|
||||
@ -886,9 +888,9 @@ fhandler_tty_common::close ()
|
||||
termios_printf ("CloseHandle (inuse), %E");
|
||||
if (!ForceCloseHandle (output_mutex))
|
||||
termios_printf ("CloseHandle (output_mutex<%p>), %E", output_mutex);
|
||||
if (!CloseHandle (get_handle ()))
|
||||
if (!ForceCloseHandle1 (get_handle (), from_pty))
|
||||
termios_printf ("CloseHandle (get_handle ()<%p>), %E", get_handle ());
|
||||
if (!CloseHandle (get_output_handle ()))
|
||||
if (!ForceCloseHandle1 (get_output_handle (), to_pty))
|
||||
termios_printf ("CloseHandle (get_output_handle ()<%p>), %E", get_output_handle ());
|
||||
|
||||
inuse = NULL;
|
||||
@ -908,10 +910,12 @@ fhandler_pty_master::close ()
|
||||
if (!get_ttyp ()->master_alive ())
|
||||
{
|
||||
termios_printf ("freeing tty%d (%d)", ttynum, get_ttyp ()->ntty);
|
||||
#if 0
|
||||
if (get_ttyp ()->to_slave)
|
||||
CloseHandle (get_ttyp ()->to_slave);
|
||||
ForceCloseHandle1 (get_ttyp ()->to_slave, to_slave);
|
||||
if (get_ttyp ()->from_slave)
|
||||
CloseHandle (get_ttyp ()->from_slave);
|
||||
ForceCloseHandle1 (get_ttyp ()->from_slave, from_slave);
|
||||
#endif
|
||||
if (get_ttyp ()->from_master)
|
||||
CloseHandle (get_ttyp ()->from_master);
|
||||
if (get_ttyp ()->to_master)
|
||||
@ -1037,6 +1041,8 @@ fhandler_pty_master::set_close_on_exec (int val)
|
||||
{
|
||||
get_ttyp ()->from_slave = get_handle ();
|
||||
get_ttyp ()->to_slave = get_output_handle ();
|
||||
termios_printf ("from_slave %p, to_slave %p", get_handle (),
|
||||
get_output_handle ());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -258,7 +258,6 @@ proc_subproc (DWORD what, DWORD val)
|
||||
|
||||
pchildren[nchildren] = vchild;
|
||||
hchildren[nchildren] = vchild->hProcess;
|
||||
ProtectHandle1 (vchild->hProcess, childhProc);
|
||||
if (!DuplicateHandle (hMainProc, vchild->hProcess, hMainProc, &vchild->pid_handle,
|
||||
0, 0, DUPLICATE_SAME_ACCESS))
|
||||
system_printf ("Couldn't duplicate child handle for pid %d, %E", vchild->pid);
|
||||
|
@ -136,8 +136,8 @@ tty_list::terminate (void)
|
||||
}
|
||||
|
||||
termios_printf ("tty %d master about to finish", ttynum);
|
||||
CloseHandle (t->to_slave);
|
||||
CloseHandle (t->from_slave);
|
||||
ForceCloseHandle1 (t->to_slave, to_pty);
|
||||
ForceCloseHandle1 (t->from_slave, from_pty);
|
||||
WaitForSingleObject (tty_master->hThread, INFINITE);
|
||||
t->init ();
|
||||
|
||||
@ -355,12 +355,14 @@ tty::make_pipes (fhandler_pty_master *ptym)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
ProtectHandle1 (to_slave, to_pty);
|
||||
if (CreatePipe (&from_slave, &to_master, &sec_all, 0) == FALSE)
|
||||
{
|
||||
termios_printf ("can't create output pipe");
|
||||
set_errno (ENOENT);
|
||||
return FALSE;
|
||||
}
|
||||
ProtectHandle1 (from_slave, from_pty);
|
||||
termios_printf ("tty%d from_slave %p, to_slave %p", ntty, from_slave,
|
||||
to_slave);
|
||||
ptym->set_io_handle (from_slave);
|
||||
|
Loading…
x
Reference in New Issue
Block a user