[cairo] Implementing cairo_read_func_t/cairo_write_func_t properly

Behdad Esfahbod behdad.esfahbod at gmail.com
Fri Jan 1 04:14:03 PST 2016


On 16-01-01 09:32 AM, Bernhard Fischer wrote:
> On Thursday 31 December 2015 09:54:39 Lawrence D'Oliveiro wrote:
>> > On Wed, 30 Dec 2015 15:27:13 +0100, Bernhard Fischer wrote:
>>> > > when I would return STATUS_READ_ERROR, then the calling function
>>> > > cannot detect how many bytes then actually have been read except in
>>> > > the case that I read 1 byte after the other.
>> > 
>> > Does it matter? In any case, the file is clearly corrupted and the
>> > image decoding has failed.
>> > 
>> > At least, that is my conclusion...
> 
> Yes, it matters!
> cairo_..._stream() are stream reading functions. This is that it does not know 
> in advance how many bytes are available in the file.
> 
> The read_func_t is called with a buffer of a programmer-chosen length (from 
> within cairo_..._stream()), e.g. 10k. But if the file has just 9k, obviously 
> only 9k are read. Unfortunately, the programmer has no way to find that out.

I agree this could be designed better...


More information about the cairo mailing list