From: Nikolay Sivov nsivov@codeweavers.com
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- dlls/windowscodecs/metadataquery.c | 8 ++++++++ dlls/windowscodecs/tests/metadata.c | 16 ++++------------ 2 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/dlls/windowscodecs/metadataquery.c b/dlls/windowscodecs/metadataquery.c index 0eada0ae656..e535103d001 100644 --- a/dlls/windowscodecs/metadataquery.c +++ b/dlls/windowscodecs/metadataquery.c @@ -359,6 +359,14 @@ static void parse_query_data_item(struct query_parser *parser, PROPVARIANT *item
if (parser_skip_char(parser, '{')) return;
+ /* Empty "{}" item represents VT_EMPTY. */ + if (*parser->ptr == '}') + { + item->vt = VT_EMPTY; + parser->ptr++; + return; + } + /* Type */ span.str = parser->ptr; span.len = 0; diff --git a/dlls/windowscodecs/tests/metadata.c b/dlls/windowscodecs/tests/metadata.c index b7b48a4e5b1..f70df520c22 100644 --- a/dlls/windowscodecs/tests/metadata.c +++ b/dlls/windowscodecs/tests/metadata.c @@ -781,23 +781,15 @@ static void test_metadata_unknown(void)
PropVariantInit(&value); hr = IWICMetadataQueryReader_GetMetadataByName(query_reader2, L"/{}", &value); - todo_wine ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - if (hr == S_OK) - { - compare_blob(&value, metadata_unknown, sizeof(metadata_unknown)); - PropVariantClear(&value); - } + compare_blob(&value, metadata_unknown, sizeof(metadata_unknown)); + PropVariantClear(&value);
PropVariantInit(&value); hr = IWICMetadataQueryReader_GetMetadataByName(query_reader, L"/unknown/{}", &value); - todo_wine ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - if (hr == S_OK) - { - compare_blob(&value, metadata_unknown, sizeof(metadata_unknown)); - PropVariantClear(&value); - } + compare_blob(&value, metadata_unknown, sizeof(metadata_unknown)); + PropVariantClear(&value);
IWICMetadataQueryReader_Release(query_reader2); IWICMetadataQueryReader_Release(query_reader);