diff options
author | sebres <sebres@users.sourceforge.net> | 2017-07-03 13:31:53 (GMT) |
---|---|---|
committer | sebres <sebres@users.sourceforge.net> | 2017-07-03 13:31:53 (GMT) |
commit | bb5afa316b0e04d8a04e874a253dabc3babc52de (patch) | |
tree | dbd79e14f92a26c26886f7159a075a04242a42c3 | |
parent | 06f9fcd88b1e4a25a0a4c87a3ed1e7ec2e0ebf31 (diff) | |
download | tcl-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).
-rw-r--r-- | generic/tclIO.c | 10 |
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; } |