Vibhav Pant (@vibhavp) commented about dlls/wintypes/map.c:
+ FIXME( "iface %p, class_name %p stub!\n", iface, class_name ); + return E_NOTIMPL; +} + +static HRESULT WINAPI iterator_GetTrustLevel( IIterator_IKeyValuePair_HSTRING_IInspectable *iface, TrustLevel *trust_level ) +{ + FIXME( "iface %p, trust_level %p stub!\n", iface, trust_level ); + return E_NOTIMPL; +} + +static HRESULT WINAPI iterator_get_Current( IIterator_IKeyValuePair_HSTRING_IInspectable *iface, IKeyValuePair_HSTRING_IInspectable **value ) +{ + struct iterator *impl = impl_from_IIterator_IKeyValuePair_HSTRING_IInspectable( iface ); + struct map_view *view = impl_from_IMapView_HSTRING_IInspectable( impl->view ); + TRACE( "iface %p, value %p\n", iface, value ); + return pair_create( view->iids.pair, view->entries + impl->index, value ); Shouldn't we check if `impl->index` is still within bounds? Also, the documentation mentions that `_get_Current()` may return `E_CHANGED_STATE` if map entries have changed, I assume the PropertySet iterators never return that?
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/8749#note_113898