updated for version 7.3.698
Problem: Python 3 does not preserve state beween commands.
Solution: Preserve the state. (Paul Ollis)
diff --git a/src/if_python.c b/src/if_python.c
index 2a53c93..5e792b1 100644
--- a/src/if_python.c
+++ b/src/if_python.c
@@ -740,9 +740,10 @@
#else
PyMac_Initialize();
#endif
- /* Initialise threads and save the state using PyGILState_Ensure.
- * Without this call, thread-specific state (such as the system trace
- * hook), will be lost between invocations of Python code. */
+ /* 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. */
PyEval_InitThreads();
pygilstate = PyGILState_Ensure();
#ifdef DYNAMIC_PYTHON
diff --git a/src/if_python3.c b/src/if_python3.c
index ea59a42..e9f7400 100644
--- a/src/if_python3.c
+++ b/src/if_python3.c
@@ -731,8 +731,12 @@
#else
PyMac_Initialize();
#endif
- /* initialise threads, must be after Py_Initialize() */
+ /* 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. */
PyEval_InitThreads();
+ pygilstate = PyGILState_Ensure();
#ifdef DYNAMIC_PYTHON3
get_py3_exceptions();
diff --git a/src/version.c b/src/version.c
index d10266d..6613e50 100644
--- a/src/version.c
+++ b/src/version.c
@@ -720,6 +720,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 698,
+/**/
697,
/**/
696,