summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugins/pychrysalide/pychrysa.c17
-rw-r--r--src/plugins/plugin.c14
2 files changed, 25 insertions, 6 deletions
diff --git a/plugins/pychrysalide/pychrysa.c b/plugins/pychrysalide/pychrysa.c
index dd6f576..200bdaa 100644
--- a/plugins/pychrysalide/pychrysa.c
+++ b/plugins/pychrysalide/pychrysa.c
@@ -585,7 +585,22 @@ G_MODULE_EXPORT bool chrysalide_plugin_init(GPluginModule *plugin)
_chrysalide_module = PyImport_ImportModule("pychrysalide");
- result = load_python_plugins(plugin);
+ /**
+ * Pour mémoire, une situation concrête conduisant à un échec :
+ * le paquet python3-gi-dbg n'est pas installé alors que le
+ * programme est compilé en mode débogage.
+ *
+ * Dans ce cas, pygobject_init(-1, -1, -1) échoue, et Py_Initialize()
+ * le laisse rien filtrer...
+ *
+ * En mode autonome, le shell Python remonte bien l'erreur par contre.
+ */
+
+ if (_chrysalide_module == NULL)
+ result = false;
+
+ else
+ result = load_python_plugins(plugin);
PyEval_ReleaseLock();
diff --git a/src/plugins/plugin.c b/src/plugins/plugin.c
index d309332..40f44ce 100644
--- a/src/plugins/plugin.c
+++ b/src/plugins/plugin.c
@@ -127,13 +127,17 @@ static void g_plugin_module_dispose(GPluginModule *plugin)
for (i = 0; i < pg_iface->required_count; i++)
{
dependency = get_plugin_by_name(pg_iface->required[i], NULL);
- assert(dependency != NULL);
- /* Un coup pour l'appel à get_plugin_by_name(). */
- g_object_unref(G_OBJECT(dependency));
+ /* Si le chargement a bien été complet avant la sortie... */
+ if (dependency != NULL)
+ {
+ /* Un coup pour l'appel à get_plugin_by_name(). */
+ g_object_unref(G_OBJECT(dependency));
+
+ /* Un coup pour la dépendance */
+ g_object_unref(G_OBJECT(dependency));
- /* Un coup pour la dépendance */
- g_object_unref(G_OBJECT(dependency));
+ }
}