diff options
author | Ulrich Drepper <drepper@redhat.com> | 1998-09-01 23:08:36 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1998-09-01 23:08:36 +0000 |
commit | 4ce636da6cf71061410da841e12b27b5f551e879 (patch) | |
tree | 7fbf79a1e87740f20182aacd009e4d1ca8480140 /elf/dl-close.c | |
parent | fc3597c0f80a4a7d7c0425285bdefa6f5fff87da (diff) | |
download | glibc-4ce636da6cf71061410da841e12b27b5f551e879.tar.gz glibc-4ce636da6cf71061410da841e12b27b5f551e879.tar.xz glibc-4ce636da6cf71061410da841e12b27b5f551e879.zip |
Update.
* elf/dl-close.c (_dl_close): Add more comments and correct some. Free l_searchlist and l_dupsearchlist.
Diffstat (limited to 'elf/dl-close.c')
-rw-r--r-- | elf/dl-close.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/elf/dl-close.c b/elf/dl-close.c index 94978ed961..3b1e3c9f57 100644 --- a/elf/dl-close.c +++ b/elf/dl-close.c @@ -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); } } |