diff options
Diffstat (limited to 'plugins/pychrysalide')
-rw-r--r-- | plugins/pychrysalide/pychrysa.c | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/plugins/pychrysalide/pychrysa.c b/plugins/pychrysalide/pychrysa.c index 928743d..723c2bc 100644 --- a/plugins/pychrysalide/pychrysa.c +++ b/plugins/pychrysalide/pychrysa.c @@ -94,6 +94,9 @@ static bool is_current_abi_suitable(void); /* Définit la version attendue de GTK à charger dans Python. */ static bool set_version_for_gtk_namespace(const char *); +/* Point de sortie pour l'initialisation de Python. */ +static void PyExit_pychrysalide(void); + /* Complète les chemins de recherches de Python. */ static void extend_python_path(const char *); @@ -292,6 +295,27 @@ static bool set_version_for_gtk_namespace(const char *version) * * * Paramètres : - * * * +* Description : Point de sortie pour l'initialisation de Python. * +* * +* Retour : ? * +* * +* Remarques : - * +* * +******************************************************************************/ + +static void PyExit_pychrysalide(void) +{ + extern void set_current_project(void *project); + + set_current_project(NULL); + +} + + +/****************************************************************************** +* * +* Paramètres : - * +* * * Description : Point d'entrée pour l'initialisation de Python. * * * * Retour : ? * @@ -316,6 +340,7 @@ PyMODINIT_FUNC PyInit_pychrysalide(void) { PyObject *result; /* Module Python à retourner */ bool status; /* Bilan des inclusions */ + int ret; /* Bilan de préparatifs */ GPluginModule *self; /* Représentation interne */ PluginStatusFlags self_flags; /* Fanions à mettre à jour */ @@ -427,12 +452,20 @@ PyMODINIT_FUNC PyInit_pychrysalide(void) if (!status) { - PyErr_SetString(PyExc_SystemError, "fail to load all PyChrysalide components."); + PyErr_SetString(PyExc_SystemError, "failed to load all PyChrysalide components."); return NULL; } if (_standalone) { + ret = Py_AtExit(PyExit_pychrysalide); + + if (ret == -1) + { + PyErr_SetString(PyExc_SystemError, "failed to register a cleanup function."); + return NULL; + } + /** * Comme les sources locales sont prioritaires, le fichier "core/global.h" * du greffon masque la fonction suivante, issue du corps principal du |