From 97c15ed3581d16207e76e0ebd06061e4213de8ce Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Fri, 29 Apr 2016 15:00:09 +0200 Subject: [PATCH] settings: don't unload settings plugins on failure Also, registering a weak-pointer to close the module that was just made as resident is pointless. (cherry picked from commit c6a92224a4d49136addfd13fb933b6329b47a1f3) --- src/settings/nm-settings.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/settings/nm-settings.c b/src/settings/nm-settings.c index 2c1c3abbf1..65148994f9 100644 --- a/src/settings/nm-settings.c +++ b/src/settings/nm-settings.c @@ -843,18 +843,19 @@ load_plugin: break; } + /* after accessing the plugin we cannot unload it anymore, because the glib + * types cannot be properly unregistered. */ + g_module_make_resident (plugin); + obj = (*factory_func) (); if (!obj || !NM_IS_SETTINGS_PLUGIN (obj)) { g_set_error (error, NM_SETTINGS_ERROR, NM_SETTINGS_ERROR_FAILED, "Plugin '%s' returned invalid system config object.", pname); success = FALSE; - g_module_close (plugin); break; } - g_module_make_resident (plugin); - g_object_weak_ref (obj, (GWeakNotify) g_module_close, plugin); g_object_set_data_full (obj, PLUGIN_MODULE_PATH, path, g_free); path = NULL; if (add_plugin (self, NM_SETTINGS_PLUGIN (obj)))