Skip to content

Commit 714274c

Browse files
committed
fix crash when visiting a non-consumed timer handler
1 parent 283380a commit 714274c

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

Modules/_tkinter.c

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2764,7 +2764,14 @@ static int
27642764
Tktt_Clear(PyObject *op)
27652765
{
27662766
TkttObject *self = TkttObject_CAST(op);
2767-
Py_CLEAR(self->func);
2767+
if (self->token != NULL) {
2768+
Tcl_DeleteTimerHandler(self->token);
2769+
self->token = NULL;
2770+
}
2771+
if (self->func != NULL) {
2772+
Py_CLEAR(self->func);
2773+
Py_DECREF(op); /* See Tktt_New() */
2774+
}
27682775
return 0;
27692776
}
27702777

@@ -2783,6 +2790,9 @@ Tktt_Traverse(PyObject *op, visitproc visit, void *arg)
27832790
{
27842791
TkttObject *self = TkttObject_CAST(op);
27852792
Py_VISIT(Py_TYPE(op));
2793+
if (self->token != NULL) {
2794+
Py_VISIT(op); /* See Tktt_New() */
2795+
}
27862796
Py_VISIT(self->func);
27872797
return 0;
27882798
}

0 commit comments

Comments
 (0)