Levente Uzonyi uploaded a new version of Compression to project The Trunk: http://source.squeak.org/trunk/Compression-ul.31.mcz
==================== Summary ====================
Name: Compression-ul.31 Author: ul Time: 6 December 2011, 12:23:31.156 pm UUID: 0fc814a0-b8d5-9847-b67b-ee8efcbbe6db Ancestors: Compression-nice.30
Allow reading zero bytes in InflateStream >> #next:into:startingAt: and InflateStream >> #readInto:startingAt:count:.
=============== Diff against Compression-nice.30 ===============
Item was changed: ----- Method: InflateStream>>next:into:startingAt: (in category 'accessing') ----- next: n into: buffer startingAt: startIndex "Read n objects into the given collection. Return aCollection or a partial copy if less than n elements have been read." | c numRead count | + n = 0 ifTrue: [ ^buffer ]. numRead := 0. ["Force decompression if necessary" (c := self next) == nil ifTrue:[^buffer copyFrom: 1 to: startIndex+numRead-1]. "Store the first value which provoked decompression" buffer at: startIndex + numRead put: c. numRead := numRead + 1. "After collection has been filled copy as many objects as possible" count := (readLimit - position) min: (n - numRead). buffer replaceFrom: startIndex + numRead to: startIndex + numRead + count - 1 with: collection startingAt: position+1. position := position + count. numRead := numRead + count. numRead = n] whileFalse. ^buffer!
Item was changed: ----- Method: InflateStream>>readInto:startingAt:count: (in category 'accessing') ----- readInto: buffer startingAt: startIndex count: n "Read n objects into the given collection. Return number of elements that have been read." | c numRead count | + n = 0 ifTrue: [ ^n ]. numRead := 0. ["Force decompression if necessary" (c := self next) == nil ifTrue: [^numRead]. "Store the first value which provoked decompression" buffer at: startIndex + numRead put: c. numRead := numRead + 1. "After collection has been filled copy as many objects as possible" count := (readLimit - position) min: (n - numRead). buffer replaceFrom: startIndex + numRead to: startIndex + numRead + count - 1 with: collection startingAt: position+1. position := position + count. numRead := numRead + count. numRead = n] whileFalse. ^n!
squeak-dev@lists.squeakfoundation.org