From cc04ab27ba6341f46bbe094478c9af3e3706f411 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Sun, 13 Dec 2015 23:49:06 +0100 Subject: dlclose fix Patch is from Timo Teras Refs.: http://lists.uclibc.org/pipermail/uclibc/2012-October/047059.html http://git.alpinelinux.org/cgit/aports/tree/main/libc0.9.32/uclibc-dlclose-fix.patch --- ldso/libdl/libdl.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ldso/libdl/libdl.c b/ldso/libdl/libdl.c index 388e3c703..2c4b06411 100644 --- a/ldso/libdl/libdl.c +++ b/ldso/libdl/libdl.c @@ -964,8 +964,8 @@ static int do_dlclose(void *vhandle, int need_fini) dtv_t *dtv = THREAD_DTV (); - _dl_assert(!(dtv[tls_lmap->l_tls_modid].pointer.is_static)); - if (dtv[tls_lmap->l_tls_modid].pointer.val != TLS_DTV_UNALLOCATED) { + if (!(dtv[tls_lmap->l_tls_modid].pointer.is_static) && + dtv[tls_lmap->l_tls_modid].pointer.val != TLS_DTV_UNALLOCATED) { /* Note that free is called for NULL is well. We deallocate even if it is this dtv entry we are supposed to load. The reason is that we call -- cgit v1.2.3