From: Jeff Smith whydoubt@gmail.com
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=54748 --- dlls/gdiplus/image.c | 7 ++++++- dlls/gdiplus/tests/image.c | 42 +++++++++++++++++--------------------- 2 files changed, 25 insertions(+), 24 deletions(-)
diff --git a/dlls/gdiplus/image.c b/dlls/gdiplus/image.c index 3b9ce3c14f1..7b2aca7c9f7 100644 --- a/dlls/gdiplus/image.c +++ b/dlls/gdiplus/image.c @@ -2762,7 +2762,12 @@ GpStatus WINGDIPAPI GdipGetPropertySize(GpImage *image, UINT *size, UINT *count) }
reader = ((GpBitmap *)image)->metadata_reader; - if (!reader) return PropertyNotFound; + if (!reader) + { + *count = 0; + *size = 0; + return Ok; + }
hr = IWICMetadataReader_GetCount(reader, &prop_count); if (FAILED(hr)) return hresult_to_status(hr); diff --git a/dlls/gdiplus/tests/image.c b/dlls/gdiplus/tests/image.c index 6b370a0826a..af4818f8ee7 100644 --- a/dlls/gdiplus/tests/image.c +++ b/dlls/gdiplus/tests/image.c @@ -3661,7 +3661,7 @@ static void test_image_properties(void) { gifimage, sizeof(gifimage), ImageTypeBitmap, 4, 0, 4, 0, 0x5100, 0, 16 }, { wmfimage, sizeof(wmfimage), ImageTypeMetafile, 0, 0, 0, 0, 0, 0, -GenericError } }; - GpStatus status; + GpStatus status, expected; GpImage *image; UINT prop_count, prop_size, i; PROPID prop_id[16] = { 0 }; @@ -3732,13 +3732,9 @@ static void test_image_properties(void) else expect(PropertyNotFound, status);
- /* FIXME: remove once Wine is fixed */ - if (td[i].prop_count != prop_count) + /* FIXME: remove this guard once Wine is fixed - part 1/2 */ + if (td[i].prop_count == prop_count) { - GdipDisposeImage(image); - winetest_pop_context(); - continue; - }
status = GdipGetPropertyIdList(NULL, prop_count, prop_id); expect(InvalidParameter, status); @@ -3806,6 +3802,22 @@ static void test_image_properties(void) } }
+ /* FIXME: remove this guard once Wine is fixed - part 2/2 */ + } + + /* GdipGetPropertySize tests */ + status = GdipGetPropertySize(NULL, &prop_size, &prop_count); + expect(InvalidParameter, status); + status = GdipGetPropertySize(image, &prop_size, NULL); + expect(InvalidParameter, status); + status = GdipGetPropertySize(image, NULL, &prop_count); + expect(InvalidParameter, status); + status = GdipGetPropertySize(image, NULL, NULL); + expect(InvalidParameter, status); + expected = (image_type == ImageTypeMetafile) ? NotImplemented : Ok; + status = GdipGetPropertySize(image, &prop_size, &prop_count); + expect(expected, status); + GdipDisposeImage(image);
winetest_pop_context(); @@ -4170,14 +4182,6 @@ static void test_GdipGetAllPropertyItems(void)
HeapFree(GetProcessHeap(), 0, prop_id);
- status = GdipGetPropertySize(NULL, &total_size, &total_count); - expect(InvalidParameter, status); - status = GdipGetPropertySize(image, &total_size, NULL); - expect(InvalidParameter, status); - status = GdipGetPropertySize(image, NULL, &total_count); - expect(InvalidParameter, status); - status = GdipGetPropertySize(image, NULL, NULL); - expect(InvalidParameter, status); total_size = 0xdeadbeef; total_count = 0xdeadbeef; status = GdipGetPropertySize(image, &total_size, &total_count); @@ -4978,14 +4982,6 @@ static void test_gif_properties(void)
HeapFree(GetProcessHeap(), 0, prop_id);
- status = GdipGetPropertySize(NULL, &total_size, &total_count); - expect(InvalidParameter, status); - status = GdipGetPropertySize(image, &total_size, NULL); - expect(InvalidParameter, status); - status = GdipGetPropertySize(image, NULL, &total_count); - expect(InvalidParameter, status); - status = GdipGetPropertySize(image, NULL, NULL); - expect(InvalidParameter, status); total_size = 0xdeadbeef; total_count = 0xdeadbeef; status = GdipGetPropertySize(image, &total_size, &total_count);