* 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

@@ -72,6 +72,7 @@ class dll_list
dll *end;
dll *hold;
dll_type hold_type;
static muto protect;
public:
dll start;
int tot;
@@ -90,13 +91,22 @@ public:
break;
return hold;
}
dll *istart (dll_type t)
{
hold_type = t;
hold = &start;
return inext ();
}
void guard(bool lockit)
{
if (lockit)
protect.acquire ();
else
protect.release ();
}
friend void dll_global_dtors ();
dll_list () { protect.init ("dll_list"); }
};
extern dll_list dlls;