Module: wine Branch: master Commit: e848f6d539356188318ce4669de87866595b8482 URL: http://source.winehq.org/git/wine.git/?a=commit;h=e848f6d539356188318ce4669d...
Author: Huw Davies huw@codeweavers.com Date: Tue Jun 5 10:33:24 2007 +0100
oleaut32: Fixes for the PICTYPE_UNINITIALIZED case.
---
dlls/oleaut32/olepicture.c | 2 ++ dlls/oleaut32/tests/olepicture.c | 30 ++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 0 deletions(-)
diff --git a/dlls/oleaut32/olepicture.c b/dlls/oleaut32/olepicture.c index 3eb6e3e..5d3a9f0 100644 --- a/dlls/oleaut32/olepicture.c +++ b/dlls/oleaut32/olepicture.c @@ -365,6 +365,7 @@ static void OLEPictureImpl_Destroy(OLEPictureImpl* Obj) DeleteEnhMetaFile(Obj->desc.u.emf.hemf); break; case PICTYPE_NONE: + case PICTYPE_UNINITIALIZED: /* Nothing to do */ break; default: @@ -505,6 +506,7 @@ static HRESULT WINAPI OLEPictureImpl_get_Handle(IPicture *iface, TRACE("(%p)->(%p)\n", This, phandle); switch(This->desc.picType) { case PICTYPE_NONE: + case PICTYPE_UNINITIALIZED: *phandle = 0; break; case PICTYPE_BITMAP: diff --git a/dlls/oleaut32/tests/olepicture.c b/dlls/oleaut32/tests/olepicture.c index 1f65c3d..00027de 100644 --- a/dlls/oleaut32/tests/olepicture.c +++ b/dlls/oleaut32/tests/olepicture.c @@ -43,6 +43,7 @@ static HMODULE hOleaut32;
static HRESULT (WINAPI *pOleLoadPicture)(LPSTREAM,LONG,BOOL,REFIID,LPVOID*); +static HRESULT (WINAPI *pOleCreatePictureIndirect)(PICTDESC*,REFIID,BOOL,LPVOID*);
#define ok_ole_success(hr, func) ok(hr == S_OK, func " failed with error 0x%08x\n", hr)
@@ -396,10 +397,38 @@ static void test_Invoke(void) IPictureDisp_Release(picdisp); }
+static void test_OleCreatePictureIndirect(void) +{ + IPicture *pict; + HRESULT hr; + short type; + OLE_HANDLE handle; + + if(!pOleCreatePictureIndirect) + { + skip("Skipping OleCreatePictureIndirect tests\n"); + return; + } + + hr = pOleCreatePictureIndirect(NULL, &IID_IPicture, TRUE, (void**)&pict); + ok(hr == S_OK, "hr %08x\n", hr); + + hr = IPicture_get_Type(pict, &type); + ok(hr == S_OK, "hr %08x\n", hr); + ok(type == PICTYPE_UNINITIALIZED, "type %d\n", type); + + hr = IPicture_get_Handle(pict, &handle); + ok(hr == S_OK, "hr %08x\n", hr); + ok(handle == 0, "handle %08x\n", handle); + + IPicture_Release(pict); +} + START_TEST(olepicture) { hOleaut32 = LoadLibraryA("oleaut32.dll"); pOleLoadPicture = (void*)GetProcAddress(hOleaut32, "OleLoadPicture"); + pOleCreatePictureIndirect = (void*)GetProcAddress(hOleaut32, "OleCreatePictureIndirect"); if (!pOleLoadPicture) return;
@@ -414,6 +443,7 @@ START_TEST(olepicture) test_empty_image_2();
test_Invoke(); + test_OleCreatePictureIndirect(); }