From 39d9bf72c549b2b601e9c78aca7a855cd5af9162 Mon Sep 17 00:00:00 2001 From: Cyrille Bagard Date: Thu, 4 Oct 2018 01:22:11 +0200 Subject: Handled missing runtime librairies for Python GObject bindings. --- plugins/pychrysalide/pychrysa.c | 17 ++++++++++++++++- src/plugins/plugin.c | 14 +++++++++----- 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)); + } } -- cgit v0.11.2-87-g4458