summaryrefslogtreecommitdiffstats
path: root/academic/scidavis/integration_with_python_crash_bug_320.patch
blob: bef207656d5313dc6cbebc18593751f23dc831d9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
diff --git a/libscidavis/src/PythonScript.cpp b/libscidavis/src/PythonScript.cpp
index 27d4eec..a8b8ac2 100644
--- a/libscidavis/src/PythonScript.cpp
+++ b/libscidavis/src/PythonScript.cpp
@@ -43,6 +43,7 @@ PythonScript::PythonScript(PythonScripting *env, const QString &code, QObject *c
 : Script(env, code, context, name)
 {
 	PyCode = NULL;
+	PyGILState_STATE state = PyGILState_Ensure();
 	// Old: All scripts share a global namespace, and module top-level has its own nonstandard local namespace
 	modLocalDict = PyDict_New();
 	// A bit of a hack, but we need either IndexError or len() from __builtins__.
@@ -71,6 +72,7 @@ PythonScript::PythonScript(PythonScripting *env, const QString &code, QObject *c
 	else
 		PyErr_Print();
 	// "self" is unique to each script, so they can't all run in the __main__ namespace
+	PyGILState_Release(state);
 	setQObject(Context, "self");
 }