Ticket UUID: | 9ee9f4d7be4615e04f62fe22885dadce13ca4d01 | |||
Title: | zlib push/pop corrupts underlying channel | |||
Type: | Bug | Version: | various | |
Submitter: | pooryorick | Created on: | 2020-06-16 15:10:37 | |
Subsystem: | 25. Channel System | Assigned To: | dkf | |
Priority: | 5 Medium | Severity: | Important | |
Status: | Open | Last Modified: | 2020-06-19 20:04:29 | |
Resolution: | None | Closed By: | nobody | |
Closed on: | ||||
Description: |
In the following script, the $src gains two new characters at the end each time a zlib transform is pushed and then popped: set data hello
set src [file tempfile]
puts -nonewline $src $data
flush $src
chan configure $src -translation binary
set dst [file tempfile]
chan configure $dst -translation binary
for {set i 0} {$i < 10} {incr i} {
# Determine size of src channel
seek $src 0 end
set size [chan tell $src]
seek $src 0 start
# Determine size of content in src channel
set data [read $src]
set size2 [string length $data]
seek $src 0 start
# Copy src over to dst, keep dst empty
zlib push deflate $src -level 6
chan truncate $dst 0
chan copy $src $dst
chan pop $src
# Show sizes
puts [list $size $size2]
}
close $src
close $dst
|