Don't crash on _tkinter.createfilehandler in non-threaded Tcl;

disable this function in threaded Tcl. Likewise for creaetetimerhandler.
Fixes #692416.
This commit is contained in:
Martin v. Löwis 2003-03-03 10:40:01 +00:00
parent 4eab486476
commit 7f13489bdf
1 changed files with 26 additions and 1 deletions

View File

@ -2202,7 +2202,19 @@ Tkapp_CreateFileHandler(PyObject *self, PyObject *args)
if (!PyArg_ParseTuple(args, "OiO:createfilehandler",
&file, &mask, &func))
return NULL;
CHECK_TCL_APPARTMENT;
if (!self && !tcl_lock) {
/* We don't have the Tcl lock since Tcl is threaded. */
PyErr_SetString(PyExc_RuntimeError,
"_tkinter.createfilehandler not supported "
"for threaded Tcl");
return NULL;
}
if (self) {
CHECK_TCL_APPARTMENT;
}
tfile = PyObject_AsFileDescriptor(file);
if (tfile < 0)
return NULL;
@ -2396,6 +2408,19 @@ Tkapp_CreateTimerHandler(PyObject *self, PyObject *args)
PyErr_SetString(PyExc_TypeError, "bad argument list");
return NULL;
}
if (!self && !tcl_lock) {
/* We don't have the Tcl lock since Tcl is threaded. */
PyErr_SetString(PyExc_RuntimeError,
"_tkinter.createtimerhandler not supported "
"for threaded Tcl");
return NULL;
}
if (self) {
CHECK_TCL_APPARTMENT;
}
v = Tktt_New(func);
v->token = Tcl_CreateTimerHandler(milliseconds, TimerHandler,
(ClientData)v);