Commits

Bram Moolenaar  committed 8b3e88b

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.

  • Participants
  • Parent commits 274c841
  • Tags v7-3-786

Comments (0)

Files changed (2)

File src/if_python.c

 #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
 	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
 	 * 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;
     }

File src/version.c

 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    786,
+/**/
     785,
 /**/
     784,