summaryrefslogtreecommitdiffstats
path: root/generic/tclIO.c
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2014-05-08 02:55:47 (GMT)
committerdgp <dgp@users.sourceforge.net>2014-05-08 02:55:47 (GMT)
commiteb476fdf9350b70cf8ab1ec90ad848dec9d1b75b (patch)
treecaa73061d234001fa4a8dd8b7c220d1d5420a6ea /generic/tclIO.c
parent738fe7424e7be63a02664f8cef5ccefe0b0974c1 (diff)
parent48ae7e42c1bd6a104c78d737fd6b826a1a4ee7bd (diff)
downloadtcl-eb476fdf9350b70cf8ab1ec90ad848dec9d1b75b.zip
tcl-eb476fdf9350b70cf8ab1ec90ad848dec9d1b75b.tar.gz
tcl-eb476fdf9350b70cf8ab1ec90ad848dec9d1b75b.tar.bz2
Merge 8.5.dgp_read_bytes
Diffstat (limited to 'generic/tclIO.c')
-rw-r--r--generic/tclIO.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/generic/tclIO.c b/generic/tclIO.c
index fff61f3..b692d6d 100644
--- a/generic/tclIO.c
+++ b/generic/tclIO.c
@@ -2525,6 +2525,7 @@ FlushChannel(
if (errorCode == EINTR) {
errorCode = 0;
+ ReleaseChannelBuffer(bufPtr);
continue;
}
@@ -2546,6 +2547,7 @@ FlushChannel(
UpdateInterest(chanPtr);
}
errorCode = 0;
+ ReleaseChannelBuffer(bufPtr);
break;
}
@@ -2613,6 +2615,7 @@ FlushChannel(
*/
DiscardOutputQueued(statePtr);
+ ReleaseChannelBuffer(bufPtr);
continue;
} else {
wroteSome = 1;
@@ -3604,6 +3607,7 @@ static int WillRead(Channel *chanPtr)
{
if (chanPtr->typePtr == NULL) {
/* Prevent read attempts on a closed channel */
+ DiscardInputQueued(chanPtr->state, 0);
Tcl_SetErrno(EINVAL);
return -1;
}
@@ -3782,6 +3786,7 @@ Write(
if (IsBufferFull(bufPtr)) {
if (FlushChannel(NULL, chanPtr, 0) != 0) {
+ ReleaseChannelBuffer(bufPtr);
return -1;
}
flushed += statePtr->bufSize;