diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c
index c6c47db..6d096a0 100644
--- a/Modules/_tkinter.c
+++ b/Modules/_tkinter.c
@@ -146,6 +146,13 @@
    interpreter lock; inside the brackets, the Python interpreter lock has been 
    released and the lock for Tcl has been acquired.
 
+   Sometimes, it is necessary to have both the Python lock and the Tcl lock.
+   (For example, when transferring data from the Tcl interpreter result to a
+   Python string object.)  This can be done by using different macros to close
+   the ENTER_TCL block: ENTER_OVERLAP reacquires the Python lock (and restores
+   the thread state) but doesn't release the Tcl lock; LEAVE_OVERLAP_TCL
+   releases the Tcl lock.
+
    By contrast, ENTER_PYTHON(tstate) and LEAVE_PYTHON are used in Tcl event
    handlers when the handler needs to use Python.  Such event handlers are
    entered while the lock for Tcl is held; the event handler presumably needs
@@ -534,12 +541,6 @@
 	Tcl_CmdInfo info; /* and this is added */
 	Tcl_Interp *interp = Tkapp_Interp(self); /* and this too */
 
-	/* and this test */
-	if (Tcl_InterpDeleted(interp)) {
-		PyErr_SetString(Tkinter_TclError, "application is destroyed");
-		return NULL;
-	}
-
 	if (!(tmp = PyList_New(0)))
 	    return NULL;
 
@@ -652,11 +653,6 @@
 	char *cmd;
 	PyObject *res = NULL;
 
-	if (Tcl_InterpDeleted(Tkapp_Interp(self))) {
-		PyErr_SetString(Tkinter_TclError, "application is destroyed");
-		return NULL;
-	}
-
 	cmd  = Merge(args);
 	if (!cmd)
 		PyErr_SetString(Tkinter_TclError, "merge failed");
@@ -691,11 +687,6 @@
 	if (!PyArg_ParseTuple(args, "s", &script))
 		return NULL;
 
-	if (Tcl_InterpDeleted(Tkapp_Interp(self))) {
-		PyErr_SetString(Tkinter_TclError, "application is destroyed");
-		return NULL;
-	}
-
 	ENTER_TCL
 	err = Tcl_Eval(Tkapp_Interp(self), script);
 	ENTER_OVERLAP
@@ -716,11 +707,6 @@
 	PyObject *res = NULL;
 	int err;
 
-	if (Tcl_InterpDeleted(Tkapp_Interp(self))) {
-		PyErr_SetString(Tkinter_TclError, "application is destroyed");
-		return NULL;
-	}
-
 	if (!PyArg_ParseTuple(args, "s", &script))
 		return NULL;
 
@@ -744,11 +730,6 @@
 	PyObject *res = NULL;
 	int err;
 
-	if (Tcl_InterpDeleted(Tkapp_Interp(self))) {
-		PyErr_SetString(Tkinter_TclError, "application is destroyed");
-		return NULL;
-	}
-
 	if (!PyArg_ParseTuple(args, "s", &fileName))
 		return NULL;
 
@@ -773,11 +754,6 @@
 	PyObject *res = NULL;
 	int err;
 
-	if (Tcl_InterpDeleted(Tkapp_Interp(self))) {
-		PyErr_SetString(Tkinter_TclError, "application is destroyed");
-		return NULL;
-	}
-
 	if (!PyArg_ParseTuple(args, "s", &script))
 		return NULL;
 
@@ -823,11 +799,6 @@
 	PyObject *newValue;
 	PyObject *tmp;
 
-	if (Tcl_InterpDeleted(Tkapp_Interp(self))) {
-		PyErr_SetString(Tkinter_TclError, "application is destroyed");
-		return NULL;
-	}
-
 	tmp = PyList_New(0);
 	if (!tmp)
 		return NULL;
