diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2019-02-09 13:01:58 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2019-02-09 13:01:58 (GMT) |
commit | 5863af232b8fc57de210702afe659a7383bb8840 (patch) | |
tree | 18e6fd0fb7be2f01d23cda34f8d7b3f29b1a250b /plugins/pychrysalide/pychrysa.c | |
parent | 32bef30025f5e3f513c2b4936c0573cc3b629961 (diff) |
Fixed another batch of memory leaks.
Diffstat (limited to 'plugins/pychrysalide/pychrysa.c')
-rw-r--r-- | plugins/pychrysalide/pychrysa.c | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/plugins/pychrysalide/pychrysa.c b/plugins/pychrysalide/pychrysa.c index 4cb18d9..3e14add 100644 --- a/plugins/pychrysalide/pychrysa.c +++ b/plugins/pychrysalide/pychrysa.c @@ -306,13 +306,22 @@ static bool set_version_for_gtk_namespace(const char *version) static void PyExit_pychrysalide(void) { + assert(_standalone); + extern void set_current_project(void *project); set_current_project(NULL); #ifdef TRACK_GOBJECT_LEAKS - if (_standalone) - dump_remaining_gtypes(); + remember_gtypes_for_leaks(); +#endif + + exit_all_plugins(); + + unload_all_basic_components(); + +#ifdef TRACK_GOBJECT_LEAKS + dump_remaining_gtypes(); #endif } @@ -500,7 +509,12 @@ PyMODINIT_FUNC PyInit_pychrysalide(void) load_remaning_plugins(); - g_object_unref(G_OBJECT(self)); + /** + * On laisse fuir ici la référence sur self afin d'avoir + * l'assurance que le greffon se déchargera toujours en dernier. + * + * La fuite mémoire est au final évitée dans PyExit_pychrysalide(). + */ } @@ -657,6 +671,8 @@ static void load_python_plugins(GPluginModule *plugin) } + free(paths); + } @@ -737,6 +753,8 @@ G_MODULE_EXPORT bool chrysalide_plugin_init(GPluginModule *plugin) G_MODULE_EXPORT void chrysalide_plugin_exit(GPluginModule *plugin) { + clear_all_accesses_to_python_modules(); + Py_XDECREF(_chrysalide_module); } |