summaryrefslogtreecommitdiffstats
path: root/generic/tclIO.c
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2014-02-24 21:25:08 (GMT)
committerdgp <dgp@users.sourceforge.net>2014-02-24 21:25:08 (GMT)
commitc7f19f76c5362c2918fe01d49808b3246fd84100 (patch)
treee94379213d364e3bb296aa694c86fb8fef4f1bfc /generic/tclIO.c
parent73bf5da01200e7f7127273188ea24d751eb75ddf (diff)
downloadtcl-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.c28
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;
}