mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-24 14:36:13 +01:00
giomodule: Port to new g_module_open_full() API
Port all existing calls in GLib to the new API so that they can receive more detailed error information (although none of them actually make use of it at the moment). This also serves to test the new API better through use. Signed-off-by: Philip Withnall <pwithnall@endlessos.org> Helps: #203
This commit is contained in:
parent
ee589aaa32
commit
be012a8067
@ -81,7 +81,7 @@ query_dir (const char *dirname)
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
path = g_build_filename (dirname, name, NULL);
|
path = g_build_filename (dirname, name, NULL);
|
||||||
module = g_module_open (path, G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL);
|
module = g_module_open_full (path, G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL, &error);
|
||||||
g_free (path);
|
g_free (path);
|
||||||
|
|
||||||
if (module)
|
if (module)
|
||||||
@ -119,6 +119,12 @@ query_dir (const char *dirname)
|
|||||||
|
|
||||||
g_module_close (module);
|
g_module_close (module);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
g_debug ("Failed to open module %s: %s", name, error->message);
|
||||||
|
}
|
||||||
|
|
||||||
|
g_clear_error (&error);
|
||||||
}
|
}
|
||||||
|
|
||||||
g_dir_close (dir);
|
g_dir_close (dir);
|
||||||
|
@ -342,6 +342,7 @@ static gboolean
|
|||||||
g_io_module_load_module (GTypeModule *gmodule)
|
g_io_module_load_module (GTypeModule *gmodule)
|
||||||
{
|
{
|
||||||
GIOModule *module = G_IO_MODULE (gmodule);
|
GIOModule *module = G_IO_MODULE (gmodule);
|
||||||
|
GError *error = NULL;
|
||||||
|
|
||||||
if (!module->filename)
|
if (!module->filename)
|
||||||
{
|
{
|
||||||
@ -349,11 +350,12 @@ g_io_module_load_module (GTypeModule *gmodule)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
module->library = g_module_open (module->filename, G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL);
|
module->library = g_module_open_full (module->filename, G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL, &error);
|
||||||
|
|
||||||
if (!module->library)
|
if (!module->library)
|
||||||
{
|
{
|
||||||
g_printerr ("%s\n", g_module_error ());
|
g_printerr ("%s\n", error->message);
|
||||||
|
g_clear_error (&error);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -84,6 +84,7 @@ main (int argc,
|
|||||||
gchar *plugin_a, *plugin_b;
|
gchar *plugin_a, *plugin_b;
|
||||||
SimpleFunc f_a, f_b, f_self;
|
SimpleFunc f_a, f_b, f_self;
|
||||||
GModuleFunc gmod_f;
|
GModuleFunc gmod_f;
|
||||||
|
GError *error = NULL;
|
||||||
|
|
||||||
g_test_init (&argc, &argv, NULL);
|
g_test_init (&argc, &argv, NULL);
|
||||||
|
|
||||||
@ -95,18 +96,21 @@ main (int argc,
|
|||||||
|
|
||||||
/* module handles */
|
/* module handles */
|
||||||
|
|
||||||
module_self = g_module_open (NULL, G_MODULE_BIND_LAZY);
|
module_self = g_module_open_full (NULL, G_MODULE_BIND_LAZY, &error);
|
||||||
|
g_assert_no_error (error);
|
||||||
if (!module_self)
|
if (!module_self)
|
||||||
g_error ("error: %s", g_module_error ());
|
g_error ("error: %s", g_module_error ());
|
||||||
|
|
||||||
if (!g_module_symbol (module_self, "g_module_close", (gpointer *) &f_self))
|
if (!g_module_symbol (module_self, "g_module_close", (gpointer *) &f_self))
|
||||||
g_error ("error: %s", g_module_error ());
|
g_error ("error: %s", g_module_error ());
|
||||||
|
|
||||||
module_a = g_module_open (plugin_a, G_MODULE_BIND_LAZY);
|
module_a = g_module_open_full (plugin_a, G_MODULE_BIND_LAZY, &error);
|
||||||
|
g_assert_no_error (error);
|
||||||
if (!module_a)
|
if (!module_a)
|
||||||
g_error ("error: %s", g_module_error ());
|
g_error ("error: %s", g_module_error ());
|
||||||
|
|
||||||
module_b = g_module_open (plugin_b, G_MODULE_BIND_LAZY);
|
module_b = g_module_open_full (plugin_b, G_MODULE_BIND_LAZY, &error);
|
||||||
|
g_assert_no_error (error);
|
||||||
if (!module_b)
|
if (!module_b)
|
||||||
g_error ("error: %s", g_module_error ());
|
g_error ("error: %s", g_module_error ());
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user