* dll_init.cc (dll_global_dtors): Add an additional test to avoid walking the

linked list if it is empty.
(dll_list::detach): Don't set dll_global_dtors_recorded if we aren't actually
going to record any dlls.
This commit is contained in:
Christopher Faylor
2008-08-05 14:26:47 +00:00
parent bee18f45fd
commit 53364a1fae
2 changed files with 9 additions and 3 deletions

View File

@@ -31,7 +31,7 @@ dll_global_dtors ()
{
int recorded = dll_global_dtors_recorded;
dll_global_dtors_recorded = false;
if (recorded)
if (recorded && dlls.start.next)
for (dll *d = dlls.end; d != &dlls.start; d = d->prev)
d->p.run_dtors ();
}
@@ -217,10 +217,9 @@ dll_list::detach (void *retaddr)
void
dll_list::init ()
{
dll_global_dtors_recorded = true;
/* Walk the dll chain, initializing each dll */
dll *d = &start;
dll_global_dtors_recorded = d->next != NULL;
while ((d = d->next))
d->init ();
}