Hi
Looks like I'm quite busy today... or just don't know anything about wine :)
I'm still on the VB SSTab problem as described here:
http://www.winehq.org/hypermail/wine-devel/2003/12/0157.html
I looked further into this to find out what happens with this picture stuff. I found out that it fails in this function (from olepicture.c):
* OLEPictureImpl_IPersistStream_Load (IUnknown) * Loads the binary data from the IStream. Starts at current position. * Currently implemented: BITMAP, ICON, JPEG. static HRESULT WINAPI OLEPictureImpl_Load(IPersistStream* iface,IStream*pStm) {
It first reads the picture size from the stream and reads the picture properties and data. This works sometimes, I can see it creating e.g. 32x32 pictures for icons. But in this error I have it always fails due to the reported picture data size of zero. So it doesn't read any picture properties from the stream and tries to create a picture with 0x0 dimensions. Obviously this fails. But now I can't find out where this comes from. What is this stream where it wants to read data from? In what source file is this implemented? The used IStream_Load is just a macro. What could have gone wrong earlier that this picture size is now zero? Maybe the stream is ok but wine wants to create more pictures than there are?
Thanks for any pointers.
bye Fabi
I'm still on the VB SSTab problem as described here:
http://www.winehq.org/hypermail/wine-devel/2003/12/0157.html
I looked further into this to find out what happens with this picture stuff. I found out that it fails in this function (from olepicture.c):
- OLEPictureImpl_IPersistStream_Load (IUnknown)
- Loads the binary data from the IStream. Starts at current position.
- Currently implemented: BITMAP, ICON, JPEG.
static HRESULT WINAPI OLEPictureImpl_Load(IPersistStream* iface,IStream*pStm) {
It first reads the picture size from the stream and reads the picture properties and data. This works sometimes, I can see it creating e.g. 32x32 pictures for icons. But in this error I have it always fails due to the reported picture data size of zero. So it doesn't read any picture properties from the stream and tries to create a picture with 0x0 dimensions. Obviously this fails. But now I can't find out where this comes from. What is this stream where it wants to read data from? In what source file is this implemented? The used IStream_Load is just a macro. What could have gone wrong earlier that this picture size is now zero? Maybe the stream is ok but wine wants to create more pictures than there are?
Another one of my threads :)
I now know that it works if there are icons (property Picture) assigned to the single tabs in the TabCtrl. But if the icons are missing, wine goes woo. So either wine shouldn't try to create pictures if there aren't any, or it should cope with failing CreateIcon calls. I guess the first case would be better.
bye Fabi
I'm still on the VB SSTab problem as described here:
http://www.winehq.org/hypermail/wine-devel/2003/12/0157.html
I now know that it works if there are icons (property Picture) assigned to the single tabs in the TabCtrl. But if the icons are missing, wine goes woo. So either wine shouldn't try to create pictures if there aren't any, or it should cope with failing CreateIcon calls. I guess the first case would be better.
May not be the right solution but makes an SSTab without icons come up.
bye Fabi
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 29 Jan 2004 16:19:25 -0000 @@ -873,6 +873,9 @@ hr=IStream_Read(pStm,header,8,&xread); if (hr || xread!=8) { FIXME("Failure while reading picture header (hr is %lx, nread is %ld).\n",hr,xread); + return hr; + } + if (header[1]==0) { return hr; } if (header[1] > statstg.cbSize.QuadPart) {/* Incorrect header, assume none. */