diff options
| author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2019-02-01 20:36:01 (GMT) |
|---|---|---|
| committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2019-02-01 20:36:01 (GMT) |
| commit | eee14742522aed25744851879c80a96134de7369 (patch) | |
| tree | 5650ddb981ce76c5b4348123db6def9c4be1aa68 /generic/tclIO.c | |
| parent | a6ecb97fa5846d7930c9649f008c490d06e8b054 (diff) | |
| parent | 3106f9a6955f9df9de5df5879319b6e4393ab702 (diff) | |
| download | tcl-eee14742522aed25744851879c80a96134de7369.zip tcl-eee14742522aed25744851879c80a96134de7369.tar.gz tcl-eee14742522aed25744851879c80a96134de7369.tar.bz2 | |
Another (big) round of int -> size_t enhancements. So Tcl can handle string >2GiB in more places.
Diffstat (limited to 'generic/tclIO.c')
| -rw-r--r-- | generic/tclIO.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/generic/tclIO.c b/generic/tclIO.c index da6c4f1..b80739f 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -4524,7 +4524,8 @@ Tcl_GetsObj( ChannelState *statePtr = chanPtr->state; /* State info for channel */ ChannelBuffer *bufPtr; - int inEofChar, skip, copiedTotal, oldLength, oldFlags, oldRemoved; + int inEofChar, skip, copiedTotal, oldFlags, oldRemoved; + size_t oldLength; Tcl_Encoding encoding; char *dst, *dstEnd, *eol, *eof; Tcl_EncodingState oldState; @@ -6085,7 +6086,8 @@ ReadChars( int savedIEFlags = statePtr->inputEncodingFlags; int savedFlags = statePtr->flags; char *dst, *src = RemovePoint(bufPtr); - int numBytes, srcLen = BytesLeft(bufPtr); + size_t numBytes; + int srcLen = BytesLeft(bufPtr); /* * One src byte can yield at most one character. So when the number of @@ -9426,7 +9428,8 @@ CopyData( Tcl_Obj *cmdPtr, *errObj = NULL, *bufObj = NULL, *msg = NULL; Tcl_Channel inChan, outChan; ChannelState *inStatePtr, *outStatePtr; - int result = TCL_OK, size, sizeb; + int result = TCL_OK, size; + size_t sizeb; Tcl_WideInt total; const char *buffer; int inBinary, outBinary, sameEncoding; @@ -9492,7 +9495,7 @@ CopyData( || (csPtr->toRead > (Tcl_WideInt) csPtr->bufSize)) { sizeb = csPtr->bufSize; } else { - sizeb = (int) csPtr->toRead; + sizeb = csPtr->toRead; } if (inBinary || sameEncoding) { @@ -9502,7 +9505,7 @@ CopyData( size = DoReadChars(inStatePtr->topChanPtr, bufObj, sizeb, 0 /* No append */); } - underflow = (size >= 0) && (size < sizeb); /* Input underflow */ + underflow = (size >= 0) && ((size_t)size < sizeb); /* Input underflow */ } if (size < 0) { @@ -9586,7 +9589,7 @@ CopyData( * unsuitable for updating totals and toRead. */ - if (sizeb < 0) { + if (sizeb == TCL_AUTO_LENGTH) { writeError: if (interp) { TclNewObj(errObj); |
