diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2019-02-03 22:13:40 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2019-02-03 22:20:36 (GMT) |
commit | 9b35b89fce2499d5352f5323baec53abbf9a4af2 (patch) | |
tree | 49dde922a235f7d11cc8db63c8e0ac1d26f530e7 /plugins | |
parent | 10aa517f3a26dd9e4f96f78e62ba1c87e91c7243 (diff) |
Fixed various memory leaks.
Diffstat (limited to 'plugins')
-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 |