summaryrefslogtreecommitdiffstats
path: root/generic/tclIO.c
diff options
context:
space:
mode:
Diffstat (limited to 'generic/tclIO.c')
-rw-r--r--generic/tclIO.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/generic/tclIO.c b/generic/tclIO.c
index 673497b..0087526 100644
--- a/generic/tclIO.c
+++ b/generic/tclIO.c
@@ -2342,7 +2342,7 @@ RecycleBuffer(
* Do we have to free the buffer to the OS?
*/
- if (mustDiscard) {
+ if (1 || mustDiscard) {
ReleaseChannelBuffer(bufPtr);
return;
}
@@ -5612,6 +5612,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;