diff options
-rw-r--r-- | elf/dl-load.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/elf/dl-load.c b/elf/dl-load.c index 337517b19a..a17f25a4f1 100644 --- a/elf/dl-load.c +++ b/elf/dl-load.c @@ -755,10 +755,14 @@ lose (int code, int fd, const char *name, char *realname, struct link_map *l, if (l != NULL) { /* Remove the stillborn object from the list and free it. */ - if (l->l_prev) - l->l_prev->l_next = l->l_next; - if (l->l_next) - l->l_next->l_prev = l->l_prev; + assert (l->l_next == NULL); +#ifndef SHARED + if (l->l_prev == NULL) + /* No other module loaded. */ + _dl_loaded = NULL; + else +#endif + l->l_prev->l_next = NULL; --_dl_nloaded; free (l); } |