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 25c7e553e62..39b4677bdfc 100644 --- a/dlls/windowscodecs/metadataquery.c +++ b/dlls/windowscodecs/metadataquery.c @@ -322,6 +322,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_skip_char(parser, '}'); + return; + } + /* Type */ span.str = parser->ptr; span.len = 0; diff --git a/dlls/windowscodecs/tests/metadata.c b/dlls/windowscodecs/tests/metadata.c index b680448f25c..6b322d24c88 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);