From: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> --- dlls/windowscodecs/metadatahandler.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/dlls/windowscodecs/metadatahandler.c b/dlls/windowscodecs/metadatahandler.c index 28d52a91dd6..2d60c38ee10 100644 --- a/dlls/windowscodecs/metadatahandler.c +++ b/dlls/windowscodecs/metadatahandler.c @@ -71,6 +71,8 @@ static void MetadataHandler_FreeItems(MetadataHandler *This) } free(This->items); + This->items = NULL; + This->item_count = 0; } static HRESULT MetadataHandlerEnum_Create(MetadataHandler *parent, DWORD index, @@ -355,19 +357,22 @@ static HRESULT WINAPI MetadataHandler_GetSizeMax(IWICPersistStream *iface, } static HRESULT WINAPI MetadataHandler_LoadEx(IWICPersistStream *iface, - IStream *pIStream, const GUID *pguidPreferredVendor, DWORD dwPersistOptions) + IStream *stream, const GUID *pguidPreferredVendor, DWORD dwPersistOptions) { MetadataHandler *This = impl_from_IWICPersistStream(iface); - HRESULT hr; + HRESULT hr = S_OK; MetadataItem *new_items=NULL; DWORD item_count=0; - TRACE("(%p,%p,%s,%lx)\n", iface, pIStream, debugstr_guid(pguidPreferredVendor), dwPersistOptions); + TRACE("(%p,%p,%s,%lx)\n", iface, stream, debugstr_guid(pguidPreferredVendor), dwPersistOptions); EnterCriticalSection(&This->lock); - hr = This->vtable->fnLoad(pIStream, pguidPreferredVendor, dwPersistOptions, - &new_items, &item_count); + if (stream) + { + hr = This->vtable->fnLoad(stream, pguidPreferredVendor, dwPersistOptions, + &new_items, &item_count); + } if (SUCCEEDED(hr)) { -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/6261