diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2018-10-03 23:22:11 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2018-10-03 23:22:11 (GMT) |
commit | 39d9bf72c549b2b601e9c78aca7a855cd5af9162 (patch) | |
tree | 91381bc2e218214867bb555f560dd1c4d95ffc26 | |
parent | e7a46981a76c2d60b8485d06ffc408623276a091 (diff) |
Handled missing runtime librairies for Python GObject bindings.
-rw-r--r-- | plugins/pychrysalide/pychrysa.c | 17 | ||||
-rw-r--r-- | 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)); + } } |