diff options
| author | ferrieux@users.sourceforge.net <ferrieux> | 2012-05-07 16:36:43 (GMT) |
|---|---|---|
| committer | ferrieux@users.sourceforge.net <ferrieux> | 2012-05-07 16:36:43 (GMT) |
| commit | b066e99184cbadae3093baa1ab6921393b9422c0 (patch) | |
| tree | 37d41115d0b3d5efda1ea0a1f7a527dc61199cf9 /generic/tclIO.c | |
| parent | 432c6e09d8e4f2e06e74bdcd037523e489f69d06 (diff) | |
| download | tcl-b066e99184cbadae3093baa1ab6921393b9422c0.zip tcl-b066e99184cbadae3093baa1ab6921393b9422c0.tar.gz tcl-b066e99184cbadae3093baa1ab6921393b9422c0.tar.bz2 | |
Properly close nonblocking channels even when not flushing them.
Diffstat (limited to 'generic/tclIO.c')
| -rw-r--r-- | generic/tclIO.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/generic/tclIO.c b/generic/tclIO.c index b06c14d..86ee6ed 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -428,14 +428,15 @@ TclFinalizeIOSubsystem(void) statePtr = statePtr->nextCSPtr) { chanPtr = statePtr->topChanPtr; if (!GotFlag(statePtr, CHANNEL_INCLOSE | CHANNEL_CLOSED | CHANNEL_DEAD) - || (doflushnb && GotFlag(statePtr, BG_FLUSH_SCHEDULED))) { + || GotFlag(statePtr, BG_FLUSH_SCHEDULED)) { + ResetFlag(statePtr, BG_FLUSH_SCHEDULED); active = 1; break; } } /* - * We've found a live channel. Close it. + * We've found a live (or bg-closing) channel. Close it. */ if (active) { @@ -479,7 +480,6 @@ TclFinalizeIOSubsystem(void) * The refcount is greater than zero, so flush the channel. */ - ResetFlag(statePtr, BG_FLUSH_SCHEDULED); Tcl_Flush((Tcl_Channel) chanPtr); /* |
