When the plugin is enabled, the example works.I have a reproducible example with quite a large fileHi,some remember that from time to time, especially when the ZipPlugin is disabled, the DeflateStream fallback code is failing with a 'subscript is out of bounds: 65537'
| zip file |
zip := (FileStream fileNamed: 'snapshot.bin.gz') binary contentsOfEntireFile asString.
file := zip unzipped.
file zipped unzipped = file
which gives me:
ByteString(Object)>>error:
ByteString(Object)>>errorSubscriptBounds:
ByteString(Object)>>at:
ByteString>>at:
ByteString>>byteAt:
GZipWriteStream(DeflateStream)>>updateHashAt:
GZipWriteStream(DeflateStream)>>insertStringAt:
GZipWriteStream(DeflateStream)>>deflateBlock:chainLength: goodMatch:
GZipWriteStream(ZipWriteStream)>>deflateBlock: chainLength:goodMatch:
GZipWriteStream(DeflateStream)>>deflateBlock
GZipWriteStream(DeflateStream)>>next:putAll:startingAt:
GZipWriteStream(DeflateStream)>>nextPutAll:
ByteString(String)>>zippedSo I've been tracking the differences between DeflatePlugin and DeflateStream fallback code for some times without success.
What if I add a bound check in the DeflatePlugin?Then the plugin equally fails. I mean it reads past zipCollection bounds.So there's something bad in the implementation.Why does the example seem to work is still mysterious to me.