summaryrefslogtreecommitdiff
path: root/src/if_python3.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/if_python3.c')
-rw-r--r--src/if_python3.c25
1 files changed, 12 insertions, 13 deletions
diff --git a/src/if_python3.c b/src/if_python3.c
index 4067517ac..5311483dd 100644
--- a/src/if_python3.c
+++ b/src/if_python3.c
@@ -729,13 +729,11 @@ Python3_Init(void)
#else
PyMac_Initialize();
#endif
- /* Initialise threads, and save the state using PyGILState_Ensure.
- * Without the call to PyGILState_Ensure, thread specific state (such
- * as the system trace hook), will be lost between invocations of
- * Python code. */
+ /* Initialise threads, and below save the state using
+ * PyEval_SaveThread. Without the call to PyEval_SaveThread, thread
+ * specific state (such as the system trace hook), will be lost
+ * between invocations of Python code. */
PyEval_InitThreads();
- pygilstate = PyGILState_Ensure();
-
#ifdef DYNAMIC_PYTHON3
get_py3_exceptions();
#endif
@@ -754,13 +752,14 @@ Python3_Init(void)
*/
PyRun_SimpleString("import vim; import sys; sys.path = list(filter(lambda x: not x.endswith('must>not&exist'), sys.path))");
- // lock is created and acquired in PyEval_InitThreads() and thread
- // state is created in Py_Initialize()
- // there _PyGILState_NoteThreadState() also sets gilcounter to 1
- // (python must have threads enabled!)
- // so the following does both: unlock GIL and save thread state in TLS
- // without deleting thread state
- PyGILState_Release(pygilstate);
+ /* lock is created and acquired in PyEval_InitThreads() and thread
+ * state is created in Py_Initialize()
+ * there _PyGILState_NoteThreadState() also sets gilcounter to 1
+ * (python must have threads enabled!)
+ * so the following does both: unlock GIL and save thread state in TLS
+ * without deleting thread state
+ */
+ PyEval_SaveThread();
py3initialised = 1;
}