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 c6a92224a4)
This commit is contained in:
Thomas Haller 2016-04-29 15:00:09 +02:00
parent 3497dce786
commit 97c15ed358

View file

@ -843,18 +843,19 @@ load_plugin:
break; 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) (); obj = (*factory_func) ();
if (!obj || !NM_IS_SETTINGS_PLUGIN (obj)) { if (!obj || !NM_IS_SETTINGS_PLUGIN (obj)) {
g_set_error (error, NM_SETTINGS_ERROR, NM_SETTINGS_ERROR_FAILED, g_set_error (error, NM_SETTINGS_ERROR, NM_SETTINGS_ERROR_FAILED,
"Plugin '%s' returned invalid system config object.", "Plugin '%s' returned invalid system config object.",
pname); pname);
success = FALSE; success = FALSE;
g_module_close (plugin);
break; 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); g_object_set_data_full (obj, PLUGIN_MODULE_PATH, path, g_free);
path = NULL; path = NULL;
if (add_plugin (self, NM_SETTINGS_PLUGIN (obj))) if (add_plugin (self, NM_SETTINGS_PLUGIN (obj)))