diff options
author | dgp <dgp@users.sourceforge.net> | 2014-04-25 17:34:11 (GMT) |
---|---|---|
committer | dgp <dgp@users.sourceforge.net> | 2014-04-25 17:34:11 (GMT) |
commit | 0781259dd17444340c1a926c4cd2b5ade72bfebe (patch) | |
tree | 98d9db2e41a67bb86585de1fa5cb5bd1e83b0074 /generic | |
parent | 790e5adaf4cabf6c9dcaa3d109427dbe18f786ff (diff) | |
download | tcl-0781259dd17444340c1a926c4cd2b5ade72bfebe.zip tcl-0781259dd17444340c1a926c4cd2b5ade72bfebe.tar.gz tcl-0781259dd17444340c1a926c4cd2b5ade72bfebe.tar.bz2 |
Test iortrans-4.8.2 demos an infinite loop. Possible trouble with
pushback buffers.
Diffstat (limited to 'generic')
-rw-r--r-- | generic/tclIO.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/generic/tclIO.c b/generic/tclIO.c index e6439ef..41ac1e1 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -5611,6 +5611,11 @@ DoReadChars( ResetFlag(statePtr, CHANNEL_BLOCKED); } result = GetInput(chanPtr); +if (chanPtr != statePtr->topChanPtr) { +Tcl_Release(chanPtr); +chanPtr = statePtr->topChanPtr; +Tcl_Preserve(chanPtr); +} if (result != 0) { if (result == EAGAIN) { break; |