OLEPictureImpl_Load: fix for headerless pictures
Kirill Smelkov
kirr at landau.phys.spbu.ru
Tue Feb 3 10:03:22 CST 2004
On Tue, 3 Feb 2004, Fabian Cenedese wrote:
>
> >Hi,
> >In my case headerless bitmaps have
> >{ 0x42, 0x4d, 0x9c, 0xbd, 0x00, 0x00, 0x00, 0x00 } first 8 bytes.
> >
> >So, when last four are equal to zero its 'no header' case.
> >
> >ChangeLog:
> > OLEPictureImpl_Load: fix for headerless pictures
> >
> >Index: dlls/oleaut32/olepicture.c
> >===================================================================
> >RCS file: /home/wine/wine/dlls/oleaut32/olepicture.c,v
> >retrieving revision 1.30
> >diff -u -r1.30 olepicture.c
> >--- dlls/oleaut32/olepicture.c 5 Sep 2003 23:08:33 -0000 1.30
> >+++ dlls/oleaut32/olepicture.c 1 Feb 2004 12:35:41 -0000
> >@@ -875,7 +875,7 @@
> > FIXME("Failure while reading picture header (hr is %lx, nread is %ld).\n",hr,xread);
> > return hr;
> > }
> >- if (header[1] > statstg.cbSize.QuadPart) {/* Incorrect header, assume none. */
> >+ if (header[1] > statstg.cbSize.QuadPart || (header[1]==0)) {/* Incorrect header, assume none. */
> > xread = 8;
> > xbuf = This->data = HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,statstg.cbSize.QuadPart);
> > memcpy(xbuf,&header,8);
>
> I don't think that this is correct. If header[1] is 0 then it means that there is no picture at
> all, and not a picture without header (me thinks). When trying to start a program that uses
> the SSTab from TabCtl32.ocx without having assigned icons to the tabs it fails because
> wine tries to create icons that aren't in the stream. So there's no point in continuing and trying
> to read data from the stream. I could only make it work when I jump out of this function
> without doing anything if header[1] is 0. That may be wrong too but this patch doesn't
> solve it either.
In my case there are lots of *.bmp (with picture) with exactly same header
i mentioned. Thus header[1]==0 doesnt imply 'there is no picture at all'
This pictures came in ole storage taken from a real win32 app, and loading
them on windows works correctly.
--
Kirill.
More information about the wine-devel
mailing list