gdiplus: Fix GdipGetPropertySize return value when no properties exist.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=54748
This commit is contained in:
Jeff Smith 2023-07-11 10:02:29 -05:00 committed by Alexandre Julliard
parent d84210f00a
commit 1517342fac
2 changed files with 18 additions and 17 deletions

View file

@ -2760,7 +2760,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);

View file

@ -3804,6 +3804,18 @@ static void test_image_properties(void)
"expected property id %#lx, got %#lx\n", prop_id[0], item.data.id);
}
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();
@ -4154,14 +4166,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);
@ -4918,14 +4922,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);