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);