Fix some logic in PythonCmd() -- if the AsString() call failed, we'd
be calling LEAVE_PYTHON twice (once in PythonCmd_Error() and once in
PythonCmd() itself).
This fix doesn't fix the IDLE problems, but at least makes them more
debuggable by getting rid of the segfault.
Will backport.
diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c
index e9dc72b..df281cd 100644
--- a/Modules/_tkinter.c
+++ b/Modules/_tkinter.c
@@ -1982,7 +1982,9 @@
s = AsString(res, tmp);
if (s == NULL) {
- rv = PythonCmd_Error(interp);
+ Py_DECREF(res);
+ Py_DECREF(tmp);
+ return PythonCmd_Error(interp);
}
else {
Tcl_SetResult(Tkapp_Interp(self), s, TCL_VOLATILE);