summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authorsebres <sebres@users.sourceforge.net>2017-07-03 13:31:53 (GMT)
committersebres <sebres@users.sourceforge.net>2017-07-03 13:31:53 (GMT)
commitbb5afa316b0e04d8a04e874a253dabc3babc52de (patch)
treedbd79e14f92a26c26886f7159a075a04242a42c3 /generic
parent06f9fcd88b1e4a25a0a4c87a3ed1e7ec2e0ebf31 (diff)
downloadtcl-bb5afa316b0e04d8a04e874a253dabc3babc52de.zip
tcl-bb5afa316b0e04d8a04e874a253dabc3babc52de.tar.gz
tcl-bb5afa316b0e04d8a04e874a253dabc3babc52de.tar.bz2
don't cancel scheduled event as long as the event list is not bidirectional (too slow by large queue) - rewritten to cancel delayed (by execute it).
Diffstat (limited to 'generic')
-rw-r--r--generic/tclIO.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/generic/tclIO.c b/generic/tclIO.c
index 8d8f211..9f2a35e 100644
--- a/generic/tclIO.c
+++ b/generic/tclIO.c
@@ -2969,7 +2969,11 @@ CloseChannel(
*/
if (statePtr->schedEvent) {
+ /* reset channel in event (cancel delayed) */
+ *(Channel**)(statePtr->schedEvent+1) = NULL;
+#if 0
TclpCancelEvent(statePtr->schedEvent);
+#endif
statePtr->schedEvent = NULL;
}
@@ -3454,7 +3458,11 @@ Tcl_ClearChannelHandlers(
*/
if (statePtr->schedEvent) {
+ /* reset channel in event (cancel delayed) */
+ *(Channel**)(statePtr->schedEvent+1) = NULL;
+#if 0
TclpCancelEvent(statePtr->schedEvent);
+#endif
statePtr->schedEvent = NULL;
}
@@ -8105,7 +8113,7 @@ ChannelScheduledProc(
Channel *chanPtr = *(Channel**)(evPtr+1);
ChannelState *statePtr; /* State info for channel */
- if (!chanPtr) {
+ if (!chanPtr) { /* channel deleted */
return 1;
}