about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--elf/dl-close.c5
-rw-r--r--inet/getnetgrent_r.c14
3 files changed, 16 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index 14700e772d..270559ee36 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2011-06-21  Ulrich Drepper  <drepper@gmail.com>
+
+	* inet/getnetgrent_r.c: Use DL_CALL_FCT in several places.
+
 2011-06-20  David S. Miller  <davem@davemloft.net>
 
 	* sysdeps/sparc/sparc32/dl-plt.h: Protect against multiple
diff --git a/elf/dl-close.c b/elf/dl-close.c
index 229e288ef6..6f8d9d2c80 100644
--- a/elf/dl-close.c
+++ b/elf/dl-close.c
@@ -123,12 +123,15 @@ _dl_close_worker (struct link_map *map)
 	{
 	  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.  */
diff --git a/inet/getnetgrent_r.c b/inet/getnetgrent_r.c
index 0bac7b770e..7e13e3be52 100644
--- a/inet/getnetgrent_r.c
+++ b/inet/getnetgrent_r.c
@@ -133,7 +133,7 @@ __internal_setnetgrent_reuse (const char *group, struct __netgrent *datap,
       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,
@@ -145,7 +145,7 @@ __internal_setnetgrent_reuse (const char *group, struct __netgrent *datap,
 
 	  endfct = __nss_lookup_function (old_nip, "endnetgrent");
 	  if (endfct != NULL)
-	    (void) (*endfct) (datap);
+	    (void) DL_CALL_FCT (*endfct, (datap));
 	}
     }
 
@@ -244,7 +244,7 @@ internal_getnetgrent_r (char **hostp, char **userp, char **domainp,
 		    == NULL);
   while (! no_more)
     {
-      status = (*fct) (datap, buffer, buflen, &errno);
+      status = DL_CALL_FCT (*fct, (datap, buffer, buflen, &errno));
 
       if (status == NSS_STATUS_RETURN)
 	{
@@ -362,7 +362,8 @@ innetgr (const char *netgroup, const char *host, const char *user,
 	  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"))
@@ -370,7 +371,8 @@ innetgr (const char *netgroup, const char *host, const char *user,
 	    {
 	      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)
@@ -425,7 +427,7 @@ innetgr (const char *netgroup, const char *host, const char *user,
 	  /* 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;