Re: Implementing cairo_read_func_t/cairo_write_func_t properly

Bernhard Fischer <[email protected]>
Newsgroups gmane.comp.lib.cairo
Message-ID <103694187.fOW98Kl0Dj@winnie>
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.

The only way to circumvent that properly is to repeatedly call the read_func() 
with just a single-byte buffer.


Bernhard
-- 
cairo mailing list
[email protected]
http://lists.cairographics.org/mailman/listinfo/cairo
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.