about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--elf/dl-load.c12
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);
     }