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,
}
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);
......
......@@ -3681,6 +3681,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;
......@@ -3816,6 +3817,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();
......@@ -4176,19 +4202,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);
......@@ -4932,19 +4945,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);
......
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