summaryrefslogtreecommitdiff
path: root/plugins/pychrysalide/plugin.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/pychrysalide/plugin.c')
-rw-r--r--plugins/pychrysalide/plugin.c16
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));