Mike McCormack : oleaut32: Calculate icon data if the picture is
dirty, or there's no icon data.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Aug 14 05:16:24 CDT 2006
Module: wine
Branch: master
Commit: eb9f46037c2599caa240c1ebbd008d9b142d751f
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=eb9f46037c2599caa240c1ebbd008d9b142d751f
Author: Mike McCormack <mike at codeweavers.com>
Date: Mon Aug 14 14:07:30 2006 +0900
oleaut32: Calculate icon data if the picture is dirty, or there's no icon data.
---
dlls/oleaut32/olepicture.c | 45 ++++++++++++++++++--------------------------
1 files changed, 18 insertions(+), 27 deletions(-)
diff --git a/dlls/oleaut32/olepicture.c b/dlls/oleaut32/olepicture.c
index 66a76df..569fe15 100644
--- a/dlls/oleaut32/olepicture.c
+++ b/dlls/oleaut32/olepicture.c
@@ -1826,41 +1826,32 @@ static HRESULT WINAPI OLEPictureImpl_Sav
unsigned int iDataSize;
ULONG dummy;
int iSerializeResult = 0;
+ OLEPictureImpl *This = impl_from_IPersistStream(iface);
- OLEPictureImpl *This = impl_from_IPersistStream(iface);
+ TRACE("%p %p %d\n", This, pStm, fClearDirty);
switch (This->desc.picType) {
case PICTYPE_ICON:
- if (This->bIsDirty) {
- if (serializeIcon(This->desc.u.icon.hicon, &pIconData, &iDataSize)) {
- if (This->loadtime_magic != 0xdeadbeef) {
- DWORD header[2];
-
- header[0] = This->loadtime_magic;
- header[1] = iDataSize;
- IStream_Write(pStm, header, 2 * sizeof(DWORD), &dummy);
- }
- IStream_Write(pStm, pIconData, iDataSize, &dummy);
-
- HeapFree(GetProcessHeap(), 0, This->data);
- This->data = pIconData;
- This->datalen = iDataSize;
- hResult = S_OK;
- } else {
- FIXME("(%p,%p,%d), unable to serializeIcon()!\n",This,pStm,fClearDirty);
+ if (This->bIsDirty || !This->data) {
+ if (!serializeIcon(This->desc.u.icon.hicon, &pIconData, &iDataSize)) {
+ ERR("(%p,%p,%d), serializeIcon() failed\n", This, pStm, fClearDirty);
hResult = E_FAIL;
+ break;
}
- } else {
- if (This->loadtime_magic != 0xdeadbeef) {
- DWORD header[2];
+ This->data = pIconData;
+ This->datalen = iDataSize;
+ }
+ if (This->loadtime_magic != 0xdeadbeef) {
+ DWORD header[2];
- header[0] = This->loadtime_magic;
- header[1] = This->datalen;
- IStream_Write(pStm, header, 2 * sizeof(DWORD), &dummy);
- }
- IStream_Write(pStm, This->data, This->datalen, &dummy);
- hResult = S_OK;
+ header[0] = This->loadtime_magic;
+ header[1] = This->datalen;
+ IStream_Write(pStm, header, 2 * sizeof(DWORD), &dummy);
}
+ IStream_Write(pStm, This->data, This->datalen, &dummy);
+
+ HeapFree(GetProcessHeap(), 0, This->data);
+ hResult = S_OK;
break;
case PICTYPE_BITMAP:
if (This->bIsDirty) {
More information about the wine-cvs
mailing list