From: Jeff Smith whydoubt@gmail.com
Discovered in researching https://bugs.winehq.org/show_bug.cgi?id=54748 --- dlls/gdiplus/image.c | 2 +- dlls/gdiplus/tests/image.c | 52 +++++++++++++++++++------------------- 2 files changed, 27 insertions(+), 27 deletions(-)
diff --git a/dlls/gdiplus/image.c b/dlls/gdiplus/image.c index 7ad3ca0347e..4ba6b1efd95 100644 --- a/dlls/gdiplus/image.c +++ b/dlls/gdiplus/image.c @@ -2846,7 +2846,7 @@ GpStatus WINGDIPAPI GdipGetAllPropertyItems(GpImage *image, UINT size, }
reader = ((GpBitmap *)image)->metadata_reader; - if (!reader) return PropertyNotFound; + if (!reader) return GenericError;
hr = IWICMetadataReader_GetEnumerator(reader, &enumerator); if (FAILED(hr)) return hresult_to_status(hr); diff --git a/dlls/gdiplus/tests/image.c b/dlls/gdiplus/tests/image.c index 3d0d5d7a16f..4bb06f398e6 100644 --- a/dlls/gdiplus/tests/image.c +++ b/dlls/gdiplus/tests/image.c @@ -3663,6 +3663,7 @@ static void test_image_properties(void) }; GpStatus status, expected; GpImage *image; + PropertyItem *prop_item; UINT prop_count, prop_size, i; PROPID prop_id[16] = { 0 }; ImageType image_type; @@ -3798,6 +3799,31 @@ static void test_image_properties(void) status = GdipGetPropertySize(image, &prop_size, &prop_count); expect(expected, status);
+ status = GdipGetAllPropertyItems(image, 0, 0, NULL); + expect(InvalidParameter, status); + status = GdipGetAllPropertyItems(image, prop_size, prop_count, NULL); + expect(InvalidParameter, status); + prop_item = HeapAlloc(GetProcessHeap(), 0, prop_size); + expected = (image_type == ImageTypeMetafile) ? NotImplemented : InvalidParameter; + if (prop_count != 1) + { + status = GdipGetAllPropertyItems(image, prop_size, 1, prop_item); + expect(expected, status); + } + if (prop_size != 0) + { + status = GdipGetAllPropertyItems(image, 0, prop_count, prop_item); + expect(expected, status); + } + status = GdipGetAllPropertyItems(image, prop_size + 1, prop_count, prop_item); + expect(expected, status); + if (image_type != ImageTypeMetafile) + expected = (prop_count == 0) ? GenericError : Ok; + status = GdipGetAllPropertyItems(image, prop_size, prop_count, prop_item); + ok(status == expected || broken(status == Ok && prop_count == 0), /* XP */ + "Expected %d, got %d\n", expected, status); + HeapFree(GetProcessHeap(), 0, prop_item); + GdipDisposeImage(image);
winetest_pop_context(); @@ -4172,19 +4198,6 @@ static void test_GdipGetAllPropertyItems(void) "expected total property size %u, got %u\n", prop_size, total_size);
prop_item = HeapAlloc(GetProcessHeap(), 0, prop_size); - - status = GdipGetAllPropertyItems(image, 0, prop_count, prop_item); - expect(InvalidParameter, status); - status = GdipGetAllPropertyItems(image, prop_size, 1, prop_item); - expect(InvalidParameter, status); - status = GdipGetAllPropertyItems(image, prop_size, prop_count, NULL); - expect(InvalidParameter, status); - status = GdipGetAllPropertyItems(image, prop_size, prop_count, NULL); - expect(InvalidParameter, status); - status = GdipGetAllPropertyItems(image, 0, 0, NULL); - expect(InvalidParameter, status); - status = GdipGetAllPropertyItems(image, prop_size + 1, prop_count, prop_item); - expect(InvalidParameter, status); status = GdipGetAllPropertyItems(image, prop_size, prop_count, prop_item); expect(Ok, status);
@@ -4972,19 +4985,6 @@ static void test_gif_properties(void) "expected total property size %u, got %u\n", prop_size, total_size);
prop_item = HeapAlloc(GetProcessHeap(), 0, prop_size); - - status = GdipGetAllPropertyItems(image, 0, prop_count, prop_item); - expect(InvalidParameter, status); - status = GdipGetAllPropertyItems(image, prop_size, 1, prop_item); - expect(InvalidParameter, status); - status = GdipGetAllPropertyItems(image, prop_size, prop_count, NULL); - expect(InvalidParameter, status); - status = GdipGetAllPropertyItems(image, prop_size, prop_count, NULL); - expect(InvalidParameter, status); - status = GdipGetAllPropertyItems(image, 0, 0, NULL); - expect(InvalidParameter, status); - status = GdipGetAllPropertyItems(image, prop_size + 1, prop_count, prop_item); - expect(InvalidParameter, status); status = GdipGetAllPropertyItems(image, prop_size, prop_count, prop_item); expect(Ok, status);