]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Update.
authorUlrich Drepper <drepper@redhat.com>
Tue, 1 Sep 1998 23:08:36 +0000 (23:08 +0000)
committerUlrich Drepper <drepper@redhat.com>
Tue, 1 Sep 1998 23:08:36 +0000 (23:08 +0000)
* elf/dl-close.c (_dl_close): Add more comments and correct some.
Free l_searchlist and l_dupsearchlist.

ChangeLog
elf/dl-close.c

index ee4884d3f3a8775929887d0028916f68170e134c..517f272841c759ad6908ae1e88f2ec9af21ee79d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 1998-09-01  Ulrich Drepper  <drepper@cygnus.com>
 
+       * elf/dl-close.c (_dl_close): Add more comments and correct some.
+       Free l_searchlist and l_dupsearchlist.
+
        * debug/catchsegv.sh: Add one more pair of quotes.
 
 1998-09-01 17:53  Ulrich Drepper  <drepper@cygnus.com>
index 94978ed96118bf59bd0ce2a0f71e58247db53763..3b1e3c9f57f8fcf55248ab54dc956ce2f315a1a0 100644 (file)
@@ -116,8 +116,8 @@ _dl_close (struct link_map *map)
            }
 
          /* We can unmap all the maps at once.  We determined the
-            length when we loaded the object and `munmap' call does
-            the rest.  */
+            start address and length when we loaded the object and
+            the `munmap' call does the rest.  */
          __munmap ((void *) imap->l_map_start,
                    imap->l_map_end - imap->l_map_start);
 
@@ -143,8 +143,9 @@ _dl_close (struct link_map *map)
          if (imap->l_origin != NULL)
            free ((char *) imap->l_origin);
 
-         /* These names always is allocated.  */
+         /* This name always is allocated.  */
          free (imap->l_name);
+         /* Remove the list with all the names of the shared object.  */
          lnp = imap->l_libname;
          do
            {
@@ -154,6 +155,17 @@ _dl_close (struct link_map *map)
            }
          while (lnp != NULL);
 
+         /* Remove the searchlists.  */
+         if (imap->l_dupsearchlist != imap->l_searchlist)
+           {
+             /* If a l_searchlist object exists there always also is
+                a l_dupsearchlist object.  */
+             assert (imap->l_dupsearchlist != NULL);
+             free (imap->l_dupsearchlist);
+           }
+         if (imap != map && imap->l_searchlist != NULL)
+           free (imap->l_searchlist);
+
          free (imap);
        }
     }