diff options
author | andreas_kupries <akupries@shaw.ca> | 2008-05-23 21:12:10 (GMT) |
---|---|---|
committer | andreas_kupries <akupries@shaw.ca> | 2008-05-23 21:12:10 (GMT) |
commit | 199e87f5e360b10f877d2830dc15ea969dad655b (patch) | |
tree | 09f8a527074947365fa5a6bc24350f0a7416dcb7 /generic/tclIO.c | |
parent | de1bb7a14fd63e5fb0a20ea489dcba8e439937b7 (diff) | |
download | tcl-199e87f5e360b10f877d2830dc15ea969dad655b.zip tcl-199e87f5e360b10f877d2830dc15ea969dad655b.tar.gz tcl-199e87f5e360b10f877d2830dc15ea969dad655b.tar.bz2 |
* win/tclWinChan.c (FileWideSeekProc): Accepted a patch by
Alexandre Ferrieux <ferrieux@users.sourceforge.net> to fix the
[Bug 1965787]. 'tell' now works for locations > 2 GB as well
instead of going negative.
* generic/tclIO.c (Tcl_SetChannelBufferSize): Accepted a patch by
* tests/io.test: Alexandre Ferrieux <ferrieux@users.sourceforge.net>
to fix the [Bug 1969953]. Buffersize outside of the supported
range are now clipped to nearest boundary instead of ignored.
Diffstat (limited to 'generic/tclIO.c')
-rw-r--r-- | generic/tclIO.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/generic/tclIO.c b/generic/tclIO.c index 6502215..866d70a 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.61.2.28 2008/04/15 18:31:01 andreas_kupries Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.61.2.29 2008/05/23 21:12:11 andreas_kupries Exp $ */ #include "tclInt.h" @@ -159,6 +159,8 @@ static int WriteChars _ANSI_ARGS_((Channel *chanPtr, #define BUSY_STATE(st,fl) \ ((((st)->csPtrR) && ((fl) & TCL_READABLE)) || \ (((st)->csPtrW) && ((fl) & TCL_WRITABLE))) + +#define MAX_CHANNEL_BUFFER_SIZE (1024*1024) /* *--------------------------------------------------------------------------- @@ -6157,15 +6159,13 @@ Tcl_SetChannelBufferSize(chan, sz) ChannelState *statePtr; /* State of real channel structure. */ /* - * If the buffer size is smaller than 1 byte or larger than one MByte, - * do not accept the requested size and leave the current buffer size. + * Clip the buffer size to force it into the [1,1M] range */ - + if (sz < 1) { - return; - } - if (sz > (1024 * 1024)) { - return; + sz = 1; + } else if (sz > MAX_CHANNEL_BUFFER_SIZE) { + sz = MAX_CHANNEL_BUFFER_SIZE; } statePtr = ((Channel *) chan)->state; |