Esme Povirk (@madewokherd) commented about dlls/windowscodecs/metadatahandler.c:
if (SUCCEEDED(hr)) - hr = create_metadata_reader(item->id.uiVal == IFD_EXIF_TAG ? &GUID_MetadataFormatExif : &GUID_MetadataFormatGps, - vendor, options | WICMetadataCreationFailUnknown, sub_stream, &sub_reader); + { + const GUID *format = item->id.uiVal == IFD_EXIF_TAG ? &GUID_MetadataFormatExif : &GUID_MetadataFormatGps; + + if (is_writer) + hr = create_metadata_writer(format, vendor, options | WICMetadataCreationFailUnknown, + (IWICMetadataWriter **)&sub_reader); + else + hr = create_metadata_reader(format, vendor, options | WICMetadataCreationFailUnknown, + NULL, &sub_reader); + } + + if (SUCCEEDED(hr)) + hr = IWICMetadataReader_QueryInterface(sub_reader, &IID_IWICPersistStream, (void **)&persist_stream);
This isn't a new problem with the change, but I think sub_reader may be leaked if this fails. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/7275#note_93919