diff options
Diffstat (limited to 'plugins/pychrysalide/plugin.c')
-rw-r--r-- | plugins/pychrysalide/plugin.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/plugins/pychrysalide/plugin.c b/plugins/pychrysalide/plugin.c index cc69dd7..b957eff 100644 --- a/plugins/pychrysalide/plugin.c +++ b/plugins/pychrysalide/plugin.c @@ -169,7 +169,14 @@ static void g_python_plugin_init(GPythonPlugin *plugin) static void g_python_plugin_dispose(GPythonPlugin *plugin) { - Py_DECREF(plugin->instance); + PyGILState_STATE gstate; /* Sauvegarde d'environnement */ + + gstate = PyGILState_Ensure(); + + Py_XDECREF(plugin->instance); + plugin->instance = NULL; + + PyGILState_Release(gstate); G_OBJECT_CLASS(g_python_plugin_parent_class)->dispose(G_OBJECT(plugin)); @@ -653,6 +660,9 @@ static void g_python_plugin_handle_binary_content(const GPythonPlugin *plugin, P { PyObject *args; /* Arguments pour l'appel */ PyObject *value; /* Valeurs obtenues */ + PyGILState_STATE gstate; /* Sauvegarde d'environnement */ + + gstate = PyGILState_Ensure(); args = PyTuple_New(4); @@ -661,11 +671,13 @@ static void g_python_plugin_handle_binary_content(const GPythonPlugin *plugin, P PyTuple_SetItem(args, 2, PyLong_FromUnsignedLong(wid)); PyTuple_SetItem(args, 3, pygobject_new(G_OBJECT(status))); - value = run_python_method(plugin->instance, "handle_binary_content", args); + value = run_python_method(plugin->instance, "handle_content", args); Py_XDECREF(value); Py_DECREF(args); + PyGILState_Release(gstate); + } |