diff options
author | pooryorick <com.digitalsmarties@pooryorick.com> | 2019-04-23 12:59:20 (GMT) |
---|---|---|
committer | pooryorick <com.digitalsmarties@pooryorick.com> | 2019-04-23 12:59:20 (GMT) |
commit | 2a04ff4dd5c087cfb03656d828ed02be8ddac3d8 (patch) | |
tree | dc5dee9d7394c860f6b54c69f6d5312df58df92e | |
parent | 70d68cb355c39d317d984605a623b9d242d0fdc7 (diff) | |
download | tcl-2a04ff4dd5c087cfb03656d828ed02be8ddac3d8.zip tcl-2a04ff4dd5c087cfb03656d828ed02be8ddac3d8.tar.gz tcl-2a04ff4dd5c087cfb03656d828ed02be8ddac3d8.tar.bz2 |
Ensure that Tcl_CreateTimerHandler is not called if there is an existing timer
already scheduled.
-rw-r--r-- | generic/tclIORChan.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/generic/tclIORChan.c b/generic/tclIORChan.c index 8a7a16a..477452b 100644 --- a/generic/tclIORChan.c +++ b/generic/tclIORChan.c @@ -932,12 +932,16 @@ TclChanPostEventObjCmd( if (rcPtr->owner == rcPtr->thread) { #endif if (events & TCL_READABLE) { + if (rcPtr->readTimer == NULL) { rcPtr->readTimer = Tcl_CreateTimerHandler(SYNTHETIC_EVENT_TIME, TimerRunRead, rcPtr); + } } if (events & TCL_WRITABLE) { + if (rcPtr->writeTimer == NULL) { rcPtr->writeTimer = Tcl_CreateTimerHandler(SYNTHETIC_EVENT_TIME, TimerRunWrite, rcPtr); + } } #if TCL_THREADS } else { @@ -991,7 +995,7 @@ TimerRunRead( ClientData clientData) { ReflectedChannel *rcPtr = clientData; - rcPtr->readTimer = 0; + rcPtr->readTimer = NULL; Tcl_NotifyChannel(rcPtr->chan, TCL_READABLE); } @@ -1000,7 +1004,7 @@ TimerRunWrite( ClientData clientData) { ReflectedChannel *rcPtr = clientData; - rcPtr->writeTimer = 0; + rcPtr->writeTimer = NULL; Tcl_NotifyChannel(rcPtr->chan, TCL_WRITABLE); } |