forked from aniani/vim
patch 8.0.0698: crash on exit when using Python function in timer.
Problem: When a timer uses ":pyeval" or another Python command and it happens to be triggered while exiting a Crash may happen. (Ricky Zhou) Solution: Avoid running a Python command after python_end() was called. Do not trigger timers while exiting. (closes #1824)
This commit is contained in:
@@ -733,8 +733,8 @@ get_py3_exceptions(void)
|
||||
#endif /* DYNAMIC_PYTHON3 */
|
||||
|
||||
static int py3initialised = 0;
|
||||
|
||||
#define PYINITIALISED py3initialised
|
||||
static int python_end_called = FALSE;
|
||||
|
||||
#define DESTRUCTOR_FINISH(self) Py_TYPE(self)->tp_free((PyObject*)self)
|
||||
|
||||
@@ -817,6 +817,7 @@ python3_end(void)
|
||||
if (recurse != 0)
|
||||
return;
|
||||
|
||||
python_end_called = TRUE;
|
||||
++recurse;
|
||||
|
||||
#ifdef DYNAMIC_PYTHON3
|
||||
@@ -938,6 +939,9 @@ DoPyCommand(const char *cmd, rangeinitializer init_range, runner run, void *arg)
|
||||
PyObject *cmdbytes;
|
||||
PyGILState_STATE pygilstate;
|
||||
|
||||
if (python_end_called)
|
||||
goto theend;
|
||||
|
||||
#if defined(MACOS) && !defined(MACOS_X_UNIX)
|
||||
GetPort(&oldPort);
|
||||
/* Check if the Python library is available */
|
||||
|
Reference in New Issue
Block a user