Commit 7f13489b authored by Martin v. Löwis's avatar Martin v. Löwis

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

disable this function in threaded Tcl. Likewise for creaetetimerhandler.
Fixes #692416.
parent 4eab4864
......@@ -2202,7 +2202,19 @@ Tkapp_CreateFileHandler(PyObject *self, PyObject *args)
if (!PyArg_ParseTuple(args, "OiO:createfilehandler",
&file, &mask, &func))
return NULL;
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);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment