* cygheap.cc (init_cygheap::close_ctty): Avoid closing console-cttys since they

don't use archetypes and this will just result in double frees.
* dll_init.cc (dll_list::protect): Define.
(dll_list::alloc): Guard list access.
(dll_list::detach): Ditto.
* dll_init.h (dll_list::protect): Declare new muto.
(dll_list::guard): Define/declare function to guard list access.
* fhandler_termios.cc (fhandler_termios::sigflush): Avoid SEGV in pathological
condition of get_ttyp() == NULL.
This commit is contained in:
Christopher Faylor
2011-04-21 00:53:55 +00:00
parent 2f9c27131f
commit 71c17c5402
6 changed files with 62 additions and 21 deletions

View File

@@ -15,6 +15,7 @@
#include "cygerrno.h"
#include "security.h"
#include "path.h"
#include "tty.h"
#include "fhandler.h"
#include "dtable.h"
#include "cygheap.h"
@@ -106,7 +107,11 @@ void
init_cygheap::close_ctty ()
{
debug_printf ("closing cygheap->ctty %p", cygheap->ctty);
cygheap->ctty->close ();
/* FIXME: Support for console-as-ctty is limited due to the fact that
the console doesn't use archetypes - even though they could and should */
if (cygheap->ctty->get_ttyp ()
&& cygheap->ctty->get_ttyp ()->ntty != TTY_CONSOLE)
cygheap->ctty->close ();
cygheap->ctty = NULL;
}