Daniël Mantione wrote:
Please copy/paste that help. I can't believe that one would demand that a zstream starts from the start of a file; I know no file format which works this way, not even gzip.

delphi help:
"You can call the Seek method with an Offset of zero, and the Origin set to soFromBeginning. This has the effect of resetting the input stream, effectively rewinding the stream back to the beginning."
How does it work in Lazarus? A PNG file does not start with a zstream, it is in the middle of the file. If you seek to the start of a PNG file, you will read PNG chunks rather than a Zstream.
paste from fcl-image\src\fpreadpng.pp:

 ZData := TMemoryStream.Create;
 try
   EndOfFile := false;
   while not EndOfFile do
     begin
     ReadChunk;
     HandleChunk;
     end;
   Decompress := TDecompressionStream.Create (ZData);
   try
     Decompress.position := 0;
     DoDecompress;
   finally
     Decompress.Free;
   end;


So it uses memory stream. It writes data to ZData memory stream, then creates TDecompressionStream. Do you see ZData.Position = 0 here? I dont. Code assume that TDecompressionStream.Create will do that. But TDecompressionStream skips that => we have crash.

Best regards,
Paul Ishenin.
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to