diff options
author | dgp <dgp@users.sourceforge.net> | 2014-02-24 21:25:08 (GMT) |
---|---|---|
committer | dgp <dgp@users.sourceforge.net> | 2014-02-24 21:25:08 (GMT) |
commit | c7f19f76c5362c2918fe01d49808b3246fd84100 (patch) | |
tree | e94379213d364e3bb296aa694c86fb8fef4f1bfc /generic/tclIO.c | |
parent | 73bf5da01200e7f7127273188ea24d751eb75ddf (diff) | |
download | tcl-c7f19f76c5362c2918fe01d49808b3246fd84100.zip tcl-c7f19f76c5362c2918fe01d49808b3246fd84100.tar.gz tcl-c7f19f76c5362c2918fe01d49808b3246fd84100.tar.bz2 |
Reduce ReadBytes to simplest expression.
Diffstat (limited to 'generic/tclIO.c')
-rw-r--r-- | generic/tclIO.c | 28 |
1 files changed, 5 insertions, 23 deletions
diff --git a/generic/tclIO.c b/generic/tclIO.c index 1c5fed4..a73f041 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -5194,31 +5194,13 @@ ReadBytes( * the bytes from the first buffer are * returned. */ { - int toRead, srcLen, length; - ChannelBuffer *bufPtr; - char *src, *dst; - - bufPtr = statePtr->inQueueHead; - src = RemovePoint(bufPtr); - srcLen = BytesLeft(bufPtr); - - toRead = bytesToRead; - if ((unsigned) toRead > (unsigned) srcLen) { - toRead = srcLen; - } - if (toRead == 0) { - return 0; - } - - (void) Tcl_GetByteArrayFromObj(objPtr, &length); - TclAppendBytesToByteArray(objPtr, NULL, toRead); - dst = (char *) Tcl_GetByteArrayFromObj(objPtr, NULL); - dst += length; + ChannelBuffer *bufPtr = statePtr->inQueueHead; + int srcLen = BytesLeft(bufPtr); + int toRead = bytesToRead>srcLen || bytesToRead<0 ? srcLen : bytesToRead; - memcpy(dst, src, (size_t) toRead); + TclAppendBytesToByteArray(objPtr, (unsigned char *) RemovePoint(bufPtr), + toRead); bufPtr->nextRemoved += toRead; - length += toRead; - Tcl_SetByteArrayLength(objPtr, length); return toRead; } |