|
@@ -818,7 +818,7 @@ static int do_dlclose(void *vhandle, int need_fini)
|
|
|
_dl_handles = rpnt->next_handle;
|
|
|
_dl_if_debug_print("%s: usage count: %d\n",
|
|
|
handle->dyn->libname, handle->dyn->usage_count);
|
|
|
- if (handle->dyn->usage_count != 1 || (handle->dyn->rtld_flags & RTLD_NODELETE)) {
|
|
|
+ if (handle->dyn->usage_count != 1) {
|
|
|
handle->dyn->usage_count--;
|
|
|
free(handle);
|
|
|
return 0;
|
|
@@ -840,7 +840,7 @@ static int do_dlclose(void *vhandle, int need_fini)
|
|
|
for (j = 0; j < handle->init_fini.nlist; ++j) {
|
|
|
tpnt = handle->init_fini.init_fini[j];
|
|
|
tpnt->usage_count--;
|
|
|
- if (tpnt->usage_count == 0 && !(tpnt->rtld_flags & RTLD_NODELETE)) {
|
|
|
+ if (tpnt->usage_count == 0) {
|
|
|
if ((tpnt->dynamic_info[DT_FINI]
|
|
|
|| tpnt->dynamic_info[DT_FINI_ARRAY])
|
|
|
&& need_fini
|