Re: Implementing cairo_read_func_t/cairo_write_func_t properly

Bill Spitzak <[email protected]>
Newsgroups gmane.comp.lib.cairo
Message-ID <[email protected]>
On 01/01/2016 01:42 AM, Lawrence D'Oliveiro wrote:
> On Fri, 01 Jan 2016 10:32:59 +0100, Bernhard Fischer wrote:
>
>> cairo_..._stream() are stream reading functions. This is that it does
>> not know in advance how many bytes are available in the file.
>
> That’s not how they work. Cairo uses them to read known file formats.
> If it doesn’t get the number of bytes it expects, then there is
> something wrong with the file.

No, he is right, this is a problem.

A lot of libraries that accept such read/write functions are assuming 
they have to do buffering themselves, as the intention is for the 
functions to be the system read/write which are only efficient for large 
blocks.

At the point the library is calling the function to read, it is just 
trying to refill it's input buffer. It will pass the size of that 
buffer, but it wants to detect where the EOF is if it lands inside the 
buffer.

I think the api has to be changed to return number of bytes read, and a 
negative number for eof.


-- 
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.