[PATCH] oleaut32: OLEPictureImpl_Load uses Seek(STREAM_SEEK_END) to find the stream length

Bernhard Loos bernhardloos at googlemail.com
Thu Sep 15 12:38:46 CDT 2011


On Thu, Sep 15, 2011 at 08:28:53AM, Marcus Meissner wrote:
> On Thu, Sep 15, 2011 at 02:09:56PM +0200, Bernhard Loos wrote:
> > ---
> >  dlls/oleaut32/olepicture.c       |  148 +++++++++++++-------------------------
> >  dlls/oleaut32/tests/olepicture.c |   16 ++---
> >  2 files changed, 54 insertions(+), 110 deletions(-)
>
> Did make check work for you even? Marvin does not like it at least.
>
> This will break NonStatable streams, also seekability of streams can
> not be assumed.
>
> Ciao, Marcus

Windows never calls Stat on the stream, and it bails out, if Seek
doesn't work, it certainly never reads until the end of the stream.
Thats at least what happens on XP.
This only breaks on jpeg images, so I suspect the difference is in the
actual image rendering code. Wine always reads the complete image into
memory and then creates the image from this memory buffer with
IWICStream_InitializeFromMemory for example, while windows probably
calls IWICStream_InitializeFromIStream. And this method reads a 4096
bytes chunk at first and depends on Read checking for the end of the
stream.

        Bernhard



More information about the wine-devel mailing list