Commit b48a37f4 authored by Jeff Smith's avatar Jeff Smith Committed by Alexandre Julliard

gdiplus: Fix GdipGetAllPropertyItems return value when no properties exist.

parent 1517342f
...@@ -2846,7 +2846,7 @@ GpStatus WINGDIPAPI GdipGetAllPropertyItems(GpImage *image, UINT size, ...@@ -2846,7 +2846,7 @@ GpStatus WINGDIPAPI GdipGetAllPropertyItems(GpImage *image, UINT size,
} }
reader = ((GpBitmap *)image)->metadata_reader; reader = ((GpBitmap *)image)->metadata_reader;
if (!reader) return PropertyNotFound; if (!reader) return GenericError;
hr = IWICMetadataReader_GetEnumerator(reader, &enumerator); hr = IWICMetadataReader_GetEnumerator(reader, &enumerator);
if (FAILED(hr)) return hresult_to_status(hr); if (FAILED(hr)) return hresult_to_status(hr);
......
...@@ -3681,6 +3681,7 @@ static void test_image_properties(void) ...@@ -3681,6 +3681,7 @@ static void test_image_properties(void)
}; };
GpStatus status, expected; GpStatus status, expected;
GpImage *image; GpImage *image;
PropertyItem *prop_item;
UINT prop_count, prop_size, i; UINT prop_count, prop_size, i;
PROPID prop_id[16] = { 0 }; PROPID prop_id[16] = { 0 };
ImageType image_type; ImageType image_type;
...@@ -3816,6 +3817,31 @@ static void test_image_properties(void) ...@@ -3816,6 +3817,31 @@ static void test_image_properties(void)
status = GdipGetPropertySize(image, &prop_size, &prop_count); status = GdipGetPropertySize(image, &prop_size, &prop_count);
expect(expected, status); 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); GdipDisposeImage(image);
winetest_pop_context(); winetest_pop_context();
...@@ -4176,19 +4202,6 @@ static void test_GdipGetAllPropertyItems(void) ...@@ -4176,19 +4202,6 @@ static void test_GdipGetAllPropertyItems(void)
"expected total property size %u, got %u\n", prop_size, total_size); "expected total property size %u, got %u\n", prop_size, total_size);
prop_item = HeapAlloc(GetProcessHeap(), 0, prop_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); status = GdipGetAllPropertyItems(image, prop_size, prop_count, prop_item);
expect(Ok, status); expect(Ok, status);
...@@ -4932,19 +4945,6 @@ static void test_gif_properties(void) ...@@ -4932,19 +4945,6 @@ static void test_gif_properties(void)
"expected total property size %u, got %u\n", prop_size, total_size); "expected total property size %u, got %u\n", prop_size, total_size);
prop_item = HeapAlloc(GetProcessHeap(), 0, prop_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); status = GdipGetAllPropertyItems(image, prop_size, prop_count, prop_item);
expect(Ok, status); expect(Ok, status);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment