mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-07 14:18:12 +02:00
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:
parent
3497dce786
commit
97c15ed358
1 changed files with 4 additions and 3 deletions
|
|
@ -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)))
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue