gdc's std.zlib not working properly
Not sure where to file this, so I'll file this here for now.
Consider the following program:
import std.zlib;
import std.stdio;
import std.conv : to;
import std.algorithm.iteration : map;
void main() {
if(false) {
auto cmp = new Compress;
auto target = File("test.gz", "wb");
foreach (chunk; stdin.byChunk(4096).map!(x => cmp.compress(x)))
{
target.rawWrite(chunk);
}
//Write remaining data
target.rawWrite(cmp.flush());
} else {
writeln("uncomp");
auto target = File("test.gz", "rb");
auto dec = File("test", "wb");
UnCompress decmp = new UnCompress;
foreach (chunk; target.byChunk(4096).map!(x => decmp.uncompress(x)))
{
dec.rawWrite(chunk);
}
dec.rawWrite(decmp.flush());
}
}
This works flawlessly with ldc2 and compresses and decompresses the data properly. However, when building this with gdc (-r4) and trying to decompress this I get:
uncomp
std.zlib.ZlibException@/home/buildozer/aports/main/gcc/src/gcc-9.2.0/libphobos/src/std/zlib.d(93): data error
----------------
??:? _D3std4zlib10UnCompress10uncompressMFAxvZAxv.localalias [0x563a45b22b31]
??:? const(void)[] zlib.main().__lambda2!(ubyte[]).__lambda2(ubyte[]) [0x563a45adc272]
??:? @property const(void)[] std.algorithm.iteration.MapResult!(zlib.main().__lambda2, std.stdio.File.ByChunk).MapResult.front() [0x563a45ad79ec]
??:? _Dmain [0x563a45ad717b]
Not quite sure what that origins from, it appears that this doesn't happen with small strings (e.g. "test"), but it does happen with binary data. Do you happen to know something about this one, @Geod24 ?