Don't use nested function. Call _dl_catch_error with additional
authordrepper <drepper>
Sat, 29 Mar 1997 16:38:36 +0000 (16:38 +0000)
committerdrepper <drepper>
Sat, 29 Mar 1997 16:38:36 +0000 (16:38 +0000)
argument with pointer to data.

elf/dlclose.c
elf/dlerror.c

index 6a14211..d96ffc9 100644 (file)
 #include <link.h>
 #include <dlfcn.h>
 
+static void
+dlclose_doit (void *handle)
+{
+  _dl_close (handle);
+}
+
 int
 dlclose (void *handle)
 {
-  void doit (void)
-    {
-      _dl_close (handle);
-    }
-
-  return _dlerror_run (doit) ? -1 : 0;
+  return _dlerror_run (dlclose_doit, handle) ? -1 : 0;
 }
index 9e55bc7..e2b1ac9 100644 (file)
@@ -64,7 +64,7 @@ dlerror (void)
 }
 
 int
-_dlerror_run (void (*operate) (void))
+_dlerror_run (void (*operate) (void *), void *args)
 {
   if (last_errstring != NULL)
     /* Free the error string from the last failed command.  This can
@@ -72,6 +72,6 @@ _dlerror_run (void (*operate) (void))
     free (last_errstring);
 
   last_errcode = _dl_catch_error (&last_errstring, &last_object_name,
-                                 operate);
+                                 operate, args);
   return last_errstring != NULL;
 }