From: Bram Moolenaar Date: Wed, 30 Jan 2013 10:44:39 +0000 (+0100) Subject: updated for version 7.3.786 X-Git-Tag: v7.3.786 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=02366255c9bd16120c5025106f7ac5d5a06774d7;p=vim updated for version 7.3.786 Problem: Python threads don't run in the background (issue 103). Solution: Move the statements to manipulate thread state. --- diff --git a/src/if_python.c b/src/if_python.c index 5e792b16d..1bf737fc4 100644 --- a/src/if_python.c +++ b/src/if_python.c @@ -740,12 +740,11 @@ Python_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 + * 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. */ PyEval_InitThreads(); - pygilstate = PyGILState_Ensure(); #ifdef DYNAMIC_PYTHON get_exceptions(); #endif @@ -756,6 +755,10 @@ Python_Init(void) if (PythonMod_Init()) goto fail; + /* The first python thread is vim's, release the lock. */ + Python_SaveThread(); + pygilstate = PyGILState_Ensure(); + globals = PyModule_GetDict(PyImport_AddModule("__main__")); /* Remove the element from sys.path that was added because of our @@ -764,8 +767,7 @@ Python_Init(void) * the current directory in sys.path. */ PyRun_SimpleString("import sys; sys.path = filter(lambda x: x != '/must>not&exist', sys.path)"); - /* the first python thread is vim's, release the lock */ - Python_SaveThread(); + PyGILState_Release(pygilstate); initialised = 1; } diff --git a/src/version.c b/src/version.c index 0f77ad255..8115020bf 100644 --- a/src/version.c +++ b/src/version.c @@ -725,6 +725,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 786, /**/ 785, /**/