mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-26 15:36:14 +01:00
Merge branch 'cherry-pick-327-gmodule-cleanup' into 'master'
gmodule: change _g_module_close to only take a handle. See merge request GNOME/glib!1283
This commit is contained in:
commit
46f91a88b6
@ -141,19 +141,10 @@ _g_module_self (void)
|
||||
}
|
||||
|
||||
static void
|
||||
_g_module_close (gpointer handle,
|
||||
gboolean is_unref)
|
||||
_g_module_close (gpointer handle)
|
||||
{
|
||||
/* are there any systems out there that have dlopen()/dlclose()
|
||||
* without a reference count implementation?
|
||||
*/
|
||||
is_unref |= 1;
|
||||
|
||||
if (is_unref)
|
||||
{
|
||||
if (dlclose (handle) != 0)
|
||||
g_module_set_error (fetch_dlerror (TRUE));
|
||||
}
|
||||
if (dlclose (handle) != 0)
|
||||
g_module_set_error (fetch_dlerror (TRUE));
|
||||
}
|
||||
|
||||
static gpointer
|
||||
|
@ -131,21 +131,11 @@ _g_module_self (void)
|
||||
}
|
||||
|
||||
static void
|
||||
_g_module_close (gpointer handle,
|
||||
gboolean is_unref)
|
||||
_g_module_close (gpointer handle)
|
||||
{
|
||||
/* are there any systems out there that have dlopen()/dlclose()
|
||||
* without a reference count implementation?
|
||||
*
|
||||
* See above for the Android special case
|
||||
*/
|
||||
#if defined(__BIONIC__)
|
||||
is_unref = (handle != RTLD_DEFAULT);
|
||||
#else
|
||||
is_unref |= 1;
|
||||
if (handle != RTLD_DEFAULT)
|
||||
#endif
|
||||
|
||||
if (is_unref)
|
||||
{
|
||||
if (dlclose (handle) != 0)
|
||||
g_module_set_error (fetch_dlerror (TRUE));
|
||||
|
@ -113,8 +113,7 @@ _g_module_self (void)
|
||||
}
|
||||
|
||||
static void
|
||||
_g_module_close (gpointer handle,
|
||||
gboolean is_unref)
|
||||
_g_module_close (gpointer handle)
|
||||
{
|
||||
if (handle != null_module_handle)
|
||||
if (!FreeLibrary (handle))
|
||||
|
@ -207,8 +207,7 @@ struct _GModule
|
||||
static gpointer _g_module_open (const gchar *file_name,
|
||||
gboolean bind_lazy,
|
||||
gboolean bind_local);
|
||||
static void _g_module_close (gpointer handle,
|
||||
gboolean is_unref);
|
||||
static void _g_module_close (gpointer handle);
|
||||
static gpointer _g_module_self (void);
|
||||
static gpointer _g_module_symbol (gpointer handle,
|
||||
const gchar *symbol_name);
|
||||
@ -297,8 +296,7 @@ _g_module_open (const gchar *file_name,
|
||||
return NULL;
|
||||
}
|
||||
static void
|
||||
_g_module_close (gpointer handle,
|
||||
gboolean is_unref)
|
||||
_g_module_close (gpointer handle)
|
||||
{
|
||||
}
|
||||
static gpointer
|
||||
@ -615,7 +613,7 @@ g_module_open (const gchar *file_name,
|
||||
module = g_module_find_by_handle (handle);
|
||||
if (module)
|
||||
{
|
||||
_g_module_close (module->handle, TRUE);
|
||||
_g_module_close (module->handle);
|
||||
module->ref_count++;
|
||||
g_module_set_error (NULL);
|
||||
|
||||
@ -721,7 +719,7 @@ g_module_close (GModule *module)
|
||||
}
|
||||
module->next = NULL;
|
||||
|
||||
_g_module_close (module->handle, FALSE);
|
||||
_g_module_close (module->handle);
|
||||
g_free (module->file_name);
|
||||
g_free (module);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user