diff --git a/dlls/oleaut32/olepicture.c b/dlls/oleaut32/olepicture.c index bdce729639f..e57effe69b7 100644 --- a/dlls/oleaut32/olepicture.c +++ b/dlls/oleaut32/olepicture.c @@ -844,6 +844,8 @@ static HRESULT WINAPI OLEPictureImpl_get_Attributes(IPicture *iface, TRACE("(%p)->(%p).\n", This, pdwAttr); *pdwAttr = 0; switch (This->desc.picType) { + case PICTYPE_UNINITIALIZED: + case PICTYPE_NONE: break; case PICTYPE_BITMAP: if (This->hbmMask) *pdwAttr = PICTURE_TRANSPARENT; break; /* not 'truly' scalable, see MSDN. */ case PICTYPE_ICON: *pdwAttr = PICTURE_TRANSPARENT;break; case PICTYPE_ENHMETAFILE: /* fall through */ diff --git a/dlls/oleaut32/tests/olepicture.c b/dlls/oleaut32/tests/olepicture.c index 2b5b8bb86eb..ba59b50f555 100644 --- a/dlls/oleaut32/tests/olepicture.c +++ b/dlls/oleaut32/tests/olepicture.c @@ -324,6 +324,7 @@ static void test_empty_image(void) { ULARGE_INTEGER newpos1; LARGE_INTEGER seekto; short type; + DWORD attr; /* Empty image. Happens occasionally in VB programs. */ hglob = GlobalAlloc (0, 8); @@ -347,6 +348,11 @@ static void test_empty_image(void) { ok (hres == S_OK,"empty picture get type failed with hres 0x%08x\n", hres); ok (type == PICTYPE_NONE,"type is %d, but should be PICTYPE_NONE(0)\n", type); + attr = 0xdeadbeef; + hres = IPicture_get_Attributes (pic, &attr); + ok (hres == S_OK,"empty picture get attributes failed with hres 0x%08x\n", hres); + ok (attr == 0,"attr is %d, but should be 0\n", attr); + hres = IPicture_get_Handle (pic, &handle); ok (hres == S_OK,"empty picture get handle failed with hres 0x%08x\n", hres); ok (handle == 0, "empty picture get handle did not return 0, but 0x%08x\n", handle); @@ -645,6 +651,26 @@ static void test_Render(void) ReleaseDC(NULL, hdc); } +static void test_get_Attributes(void) +{ + IPicture *pic; + HRESULT hres; + short type; + DWORD attr; + + OleCreatePictureIndirect(NULL, &IID_IPicture, TRUE, (VOID**)&pic); + hres = IPicture_get_Type(pic, &type); + ok(hres == S_OK, "IPicture_get_Type does not return S_OK, but 0x%08x\n", hres); + ok(type == PICTYPE_UNINITIALIZED, "Expected type = PICTYPE_UNINITIALIZED, got = %d\n", type); + + attr = 0xdeadbeef; + hres = IPicture_get_Attributes(pic, &attr); + ole_expect(hres, S_OK); + ok(attr == 0, "IPicture_get_Attributes does not reset attr to zero, got %d\n", attr); + + IPicture_Release(pic); +} + START_TEST(olepicture) { hOleaut32 = GetModuleHandleA("oleaut32.dll"); @@ -672,6 +698,7 @@ START_TEST(olepicture) test_Invoke(); test_OleCreatePictureIndirect(); test_Render(); + test_get_Attributes(); }