summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsebres <sebres@users.sourceforge.net>2020-04-16 13:28:49 (GMT)
committersebres <sebres@users.sourceforge.net>2020-04-16 13:28:49 (GMT)
commitb7f84c7bc0a87376cd9d151b61beadb68ab18e03 (patch)
tree94a39489bcc9b408cac8e6b40954e1334fa0dbb4
parent14143230c875cfddb154eef9698c9344bbb905d5 (diff)
downloadtcl-b7f84c7bc0a87376cd9d151b61beadb68ab18e03.zip
tcl-b7f84c7bc0a87376cd9d151b61beadb68ab18e03.tar.gz
tcl-b7f84c7bc0a87376cd9d151b61beadb68ab18e03.tar.bz2
zlib: performance - set default read ahead limit to DEFAULT_BUFFER_SIZE (4K); better fix avoiding BO (replacement for [54605d16b9])
-rw-r--r--generic/tclZlib.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/generic/tclZlib.c b/generic/tclZlib.c
index 1ee8919..23472cf 100644
--- a/generic/tclZlib.c
+++ b/generic/tclZlib.c
@@ -2371,7 +2371,7 @@ ZlibPushSubcmd(
const char *const *pushOptions = pushDecompressOptions;
enum pushOptions {poDictionary, poHeader, poLevel, poLimit};
Tcl_Obj *headerObj = NULL, *compDictObj = NULL;
- int limit = 1, dummy;
+ int limit = DEFAULT_BUFFER_SIZE, dummy;
if (objc < 4) {
Tcl_WrongNumArgs(interp, 2, objv, "mode channel ?options...?");
@@ -3661,6 +3661,9 @@ ZlibStackChannelTransform(
goto error;
}
cd->inAllocated = DEFAULT_BUFFER_SIZE;
+ if (cd->inAllocated < cd->readAheadLimit) {
+ cd->inAllocated = cd->readAheadLimit;
+ }
cd->inBuffer = ckalloc(cd->inAllocated);
if (cd->flags & IN_HEADER) {
if (inflateGetHeader(&cd->inStream, &cd->inHeader.header) != Z_OK) {