diff options
Diffstat (limited to 'plugins/pychrysalide/plugin.c')
-rw-r--r-- | plugins/pychrysalide/plugin.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/plugins/pychrysalide/plugin.c b/plugins/pychrysalide/plugin.c index c42235a..eb6d00d 100644 --- a/plugins/pychrysalide/plugin.c +++ b/plugins/pychrysalide/plugin.c @@ -37,6 +37,7 @@ #include "access.h" #include "helpers.h" +#include "pychrysa.h" @@ -178,16 +179,25 @@ static void g_python_plugin_dispose(GPythonPlugin *plugin) * comme dépréciée depuis Python 3.2. * * Donc on choisit les alternatives officielles. + * + * Cependant, PyThreadState_Get() renvoit l'erreur suivante : + * + * Fatal Python error: PyThreadState_Get: no current thread + * + * Donc on se rabat sur une sauvegarde, qui n'est initialisée que lorsque l'interpréteur + * est intégré dans l'éditeur. */ - tstate = PyThreadState_Get(); + tstate = get_pychrysalide_main_tstate(); - PyEval_RestoreThread(tstate); + if (tstate != NULL) + PyEval_RestoreThread(tstate); Py_XDECREF(plugin->instance); plugin->instance = NULL; - PyEval_SaveThread(); + if (tstate != NULL) + PyEval_SaveThread(); G_OBJECT_CLASS(g_python_plugin_parent_class)->dispose(G_OBJECT(plugin)); |