{
if (map->l_type == lt_loaded)
dl_close_state = rerun;
- else if (map->l_type == lt_library)
+#if 1
+ else if (map->l_type == lt_library && map->l_initfini != map->l_orig_initfini)
{
struct link_map **oldp = map->l_initfini;
map->l_initfini = map->l_orig_initfini;
+ _dl_printf("aaa\n");
_dl_scope_free (oldp);
}
+#endif
}
/* There are still references to this object. Do nothing more. */
assert (datap->data == NULL);
/* Ignore status, we force check in `__nss_next2'. */
- status = (*fct.f) (group, datap);
+ status = DL_CALL_FCT (*fct.f, (group, datap));
service_user *old_nip = datap->nip;
no_more = __nss_next2 (&datap->nip, "setnetgrent", NULL, &fct.ptr,
endfct = __nss_lookup_function (old_nip, "endnetgrent");
if (endfct != NULL)
- (void) (*endfct) (datap);
+ (void) DL_CALL_FCT (*endfct, (datap));
}
}
== NULL);
while (! no_more)
{
- status = (*fct) (datap, buffer, buflen, &errno);
+ status = DL_CALL_FCT (*fct, (datap, buffer, buflen, &errno));
if (status == NSS_STATUS_RETURN)
{
assert (entry.data == NULL);
/* Open netgroup. */
- enum nss_status status = (*setfct.f) (current_group, &entry);
+ enum nss_status status = DL_CALL_FCT (*setfct.f,
+ (current_group, &entry));
if (status == NSS_STATUS_SUCCESS
&& (getfct = __nss_lookup_function (entry.nip, "getnetgrent_r"))
{
char buffer[1024];
- while ((*getfct) (&entry, buffer, sizeof buffer, &errno)
+ while (DL_CALL_FCT (*getfct,
+ (&entry, buffer, sizeof buffer, &errno))
== NSS_STATUS_SUCCESS)
{
if (entry.type == group_val)
/* Free all resources of the service. */
endfct = __nss_lookup_function (entry.nip, "endnetgrent");
if (endfct != NULL)
- (*endfct) (&entry);
+ DL_CALL_FCT (*endfct, (&entry));
if (result != 0)
break;