diff options
Diffstat (limited to 'src/if_python3.c')
-rw-r--r-- | src/if_python3.c | 25 |
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; } |