gplugin/gplugin

a7cb44804c3b
Parents f85b91d2eff1
Children 309964817aa5
use g_slist_copy_deep instead of copying manually and clear up some error handling
--- a/gplugin/gplugin-manager.c Thu Mar 12 23:17:54 2020 -0500
+++ b/gplugin/gplugin-manager.c Thu Mar 12 23:19:23 2020 -0500
@@ -692,17 +692,8 @@
g_return_val_if_fail(id != NULL, NULL);
- for(l = g_hash_table_lookup(manager->plugins, id); l; l = l->next) {
- GPluginPlugin *plugin = NULL;
-
- if(l->data == NULL)
- continue;
-
- plugin = GPLUGIN_PLUGIN(l->data);
-
- plugins_list =
- g_slist_prepend(plugins_list, g_object_ref(G_OBJECT(plugin)));
- }
+ l = g_hash_table_lookup(manager->plugins, id);
+ plugins_list = g_slist_copy_deep(l, (GCopyFunc)g_object_ref, NULL);
return plugins_list;
}
@@ -748,9 +739,13 @@
GPluginPlugin *dependency = GPLUGIN_PLUGIN(l->data);
gboolean loaded = FALSE;
- loaded = gplugin_manager_load_plugin(dependency, error);
+ loaded = gplugin_manager_load_plugin(dependency, &ourerror);
- if(!loaded) {
+ if(!loaded || ourerror != NULL) {
+ if(ourerror != NULL) {
+ g_propagate_error(error, ourerror);
+ }
+
all_loaded = FALSE;
break;
}