summary refs log tree commit diff
path: root/iconv/gconv_dl.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2000-09-09 07:59:23 +0000
committerUlrich Drepper <drepper@redhat.com>2000-09-09 07:59:23 +0000
commitfc5f4a97487fffc7f5451d216f278d83a8259efe (patch)
tree0eb3a6efb5f6edc33aa21687390e3547d179f1b5 /iconv/gconv_dl.c
parentd0e1a1221dff0e8e77cd5d39b980267a0ec92bfd (diff)
downloadglibc-fc5f4a97487fffc7f5451d216f278d83a8259efe.tar.gz
glibc-fc5f4a97487fffc7f5451d216f278d83a8259efe.tar.xz
glibc-fc5f4a97487fffc7f5451d216f278d83a8259efe.zip
Update.
2000-09-09  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/unix/sysv/linux/dl-osinfo.h (DL_SYSDEP_OSCHECK): Use uname
	before trying to read /proc.
	Patch by Matt Wilson <msw@redhat.com>.
	* include/sys/utsname.h: Declare __uname.
	* sysdeps/generic/uname.c: Make uname a weak alias of __uname.
	* sysdeps/mach/hurd/uname.c: Likewise.
	* sysdeps/unix/syscalls.list: Likewise.

	* iconv/gconv_dl.c (do_release_shlib): Rewrite condition for
	unloading a bit.

2000-09-08  Ulrich Drepper  <drepper@redhat.com>

	* posix/getopt.c (_getopt_internal): When long_only is set always
	recognize conflicts just like before.

2000-09-08  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* sysdeps/ia64/Makefile (sysdep-rtld-routines): New variable.
Diffstat (limited to 'iconv/gconv_dl.c')
-rw-r--r--iconv/gconv_dl.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/iconv/gconv_dl.c b/iconv/gconv_dl.c
index 308db52c83..114619ec11 100644
--- a/iconv/gconv_dl.c
+++ b/iconv/gconv_dl.c
@@ -110,6 +110,7 @@ __gconv_find_shlib (const char *name)
     {
       if (found->counter < -TRIES_BEFORE_UNLOAD)
 	{
+	  assert (found->handle == NULL);
 	  found->handle = __libc_dlopen (found->name);
 	  if (found->handle != NULL)
 	    {
@@ -162,16 +163,12 @@ do_release_shlib (const void *nodep, VISIT value, int level)
       assert (obj->counter > 0);
       --obj->counter;
     }
-  else if (obj->counter <= 0)
+  else if (obj->counter <= 0 && obj->counter >= -TRIES_BEFORE_UNLOAD
+	   && --obj->counter < -TRIES_BEFORE_UNLOAD && obj->handle != NULL)
     {
-      if (obj->counter >= -TRIES_BEFORE_UNLOAD)
-	--obj->counter;
-      if (obj->counter < -TRIES_BEFORE_UNLOAD && obj->handle != NULL)
-	{
-	  /* Unload the shared object.  */
-	  __libc_dlclose (obj->handle);
-	  obj->handle = NULL;
-	}
+      /* Unload the shared object.  */
+      __libc_dlclose (obj->handle);
+      obj->handle = NULL;
     }
 }