[PATCH] windowscodecs: pceltFetched is optional in IWICEnumMetadataItem.

Esme Povirk esme at codeweavers.com
Sat Apr 9 16:03:59 CDT 2022


Spotted by Eric Pouech.

Signed-off-by: Esme Povirk <esme at codeweavers.com>
---
 dlls/windowscodecs/metadatahandler.c |  4 ++++
 dlls/windowscodecs/tests/metadata.c  | 15 +++++++++++++++
 2 files changed, 19 insertions(+)

diff --git a/dlls/windowscodecs/metadatahandler.c b/dlls/windowscodecs/metadatahandler.c
index b0b682b6d9b..5bcca0f58c6 100644
--- a/dlls/windowscodecs/metadatahandler.c
+++ b/dlls/windowscodecs/metadatahandler.c
@@ -491,9 +491,13 @@ static HRESULT WINAPI MetadataHandlerEnum_Next(IWICEnumMetadataItem *iface,
     ULONG new_index;
     HRESULT hr=S_FALSE;
     ULONG i;
+    ULONG fetched;
 
     TRACE("(%p,%li)\n", iface, celt);
 
+    if (!pceltFetched)
+        pceltFetched = &fetched;
+
     EnterCriticalSection(&This->parent->lock);
 
     if (This->index >= This->parent->item_count)
diff --git a/dlls/windowscodecs/tests/metadata.c b/dlls/windowscodecs/tests/metadata.c
index 2ec9eb645e8..57d8e2b1bea 100644
--- a/dlls/windowscodecs/tests/metadata.c
+++ b/dlls/windowscodecs/tests/metadata.c
@@ -303,6 +303,21 @@ static void test_metadata_unknown(void)
         ok(hr == S_FALSE, "Next failed, hr=%lx\n", hr);
         ok(items_returned == 0, "unexpected item count %li\n", items_returned);
 
+        hr = IWICEnumMetadataItem_Reset(enumerator);
+        ok(hr == S_OK, "Reset failed, hr=%lx\n", hr);
+
+        hr = IWICEnumMetadataItem_Next(enumerator, 1, &schema, &id, NULL, NULL);
+        ok(hr == S_OK, "Next failed, hr=%lx\n", hr);
+
+        if (hr == S_OK)
+        {
+            ok(schema.vt == VT_EMPTY, "unexpected vt: %i\n", schema.vt);
+            ok(id.vt == VT_EMPTY, "unexpected vt: %i\n", id.vt);
+
+            PropVariantClear(&schema);
+            PropVariantClear(&id);
+        }
+
         IWICEnumMetadataItem_Release(enumerator);
     }
 
-- 
2.32.0




More information about the wine-devel mailing list