diff options
author | dkf <donal.k.fellows@manchester.ac.uk> | 2013-02-11 08:11:28 (GMT) |
---|---|---|
committer | dkf <donal.k.fellows@manchester.ac.uk> | 2013-02-11 08:11:28 (GMT) |
commit | deb93dc75c9dd28fd9f66143104c03cead39a6da (patch) | |
tree | 6a339cf5c457b3d067891bab36bfa3943ac292cc /tests/zlib.test | |
parent | 9a43dd0c3b454b355b977e69118d2d15b7de614e (diff) | |
download | tcl-deb93dc75c9dd28fd9f66143104c03cead39a6da.zip tcl-deb93dc75c9dd28fd9f66143104c03cead39a6da.tar.gz tcl-deb93dc75c9dd28fd9f66143104c03cead39a6da.tar.bz2 |
[Bug 3603553]: Ensure that data gets written to the underlying stream by
compressing transforms when the amount of data to be written is one
buffer's-worth; problem was particularly likely to occur when compressing
large quantities of not-very-compressible data.
Many thanks to Piera Poggio (vampiera) for reporting.
Diffstat (limited to 'tests/zlib.test')
-rw-r--r-- | tests/zlib.test | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/tests/zlib.test b/tests/zlib.test index 891dba0..96914ca 100644 --- a/tests/zlib.test +++ b/tests/zlib.test @@ -366,6 +366,25 @@ test zlib-8.15 {transformtion and fconfigure} -setup { catch {close $inSide} catch {$strm close} } -result {358 358} +test zlib-8.16 {Bug 3603553: buffer transfer with large writes} -setup { + # Actual data isn't very important; needs to be substantially larger than + # the internal buffer (8kB) and incompressible. + set largeData {} + for {set i 0;expr srand(1)} {$i < 100000} {incr i} { + append largeData [lindex "a b c d e f g h i j k l m n o p" \ + [expr {int(16*rand())}]] + } + set file [makeFile {} test.gz] +} -constraints zlib -body { + set f [open $file wb] + fconfigure $f -buffering none + zlib push gzip $f + puts -nonewline $f $largeData + close $f + file size $file +} -cleanup { + removeFile $file +} -result 57647 test zlib-9.1 "check fcopy with push" -constraints zlib -setup { set sfile [makeFile {} testsrc.gz] |