From caf6744b7571b6e56828b99073e32ad159a1ffa4 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 22 Aug 2014 13:20:21 +0000 Subject: Same results; simpler logic. --- generic/tclIO.c | 28 +++++++--------------------- 1 file changed, 7 insertions(+), 21 deletions(-) diff --git a/generic/tclIO.c b/generic/tclIO.c index 4f81770..93ac937 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -8853,36 +8853,22 @@ DoRead( break; } - /* If there is no full buffer, attempt to create and/or fill one. */ - -if (bufPtr == NULL || BytesLeft(bufPtr) < bytesToRead) { - while (!IsBufferFull(bufPtr)) { - int code; + /* + * If there is not enough data in the buffers to possibly + * complete the read, then go get more. + */ + if (bufPtr == NULL || BytesLeft(bufPtr) < bytesToRead) { moreData: - code = GetInput(chanPtr); - bufPtr = statePtr->inQueueHead; - - assert (bufPtr != NULL); - - if (GotFlag(statePtr, CHANNEL_EOF|CHANNEL_BLOCKED)) { - /* Further reads cannot do any more */ - break; - } - - if (code) { + if (GetInput(chanPtr)) { /* Read error */ UpdateInterest(chanPtr); TclChannelRelease((Tcl_Channel)chanPtr); return -1; } - - assert (IsBufferFull(bufPtr)); + bufPtr = statePtr->inQueueHead; } - assert (bufPtr != NULL); -} - bytesRead = BytesLeft(bufPtr); bytesWritten = bytesToRead; -- cgit v0.12