summaryrefslogtreecommitdiffstats
path: root/generic/tclIO.c
diff options
context:
space:
mode:
authorandreas_kupries <akupries@shaw.ca>2008-05-23 21:12:10 (GMT)
committerandreas_kupries <akupries@shaw.ca>2008-05-23 21:12:10 (GMT)
commitd82cf694bf8c7ccbc6e245dc5443376aa0943a26 (patch)
tree09f8a527074947365fa5a6bc24350f0a7416dcb7 /generic/tclIO.c
parent2c434a3c74e8b808e20fc43c4acc5e00cadb2956 (diff)
downloadtcl-d82cf694bf8c7ccbc6e245dc5443376aa0943a26.zip
tcl-d82cf694bf8c7ccbc6e245dc5443376aa0943a26.tar.gz
tcl-d82cf694bf8c7ccbc6e245dc5443376aa0943a26.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.c16
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;