Esme Povirk (@madewokherd) commented about dlls/uiautomationcore/tests/uiautomation.c:
+ +#define check_msaa_prov_host_elem_prov( elem, exp_host_prov) \ + check_msaa_prov_host_elem_prov_( ((IUnknown *)elem), (exp_host_prov), __LINE__) +static void check_msaa_prov_host_elem_prov_(IUnknown *elem, BOOL exp_host_prov, int line) +{ + IRawElementProviderSimple *elprov, *elprov2; + HRESULT hr; + + hr = IUnknown_QueryInterface(elem, &IID_IRawElementProviderSimple, (void **)&elprov); + ok_(__FILE__, line)(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok_(__FILE__, line)(!!elprov, "elprov == NULL\n"); + + elprov2 = (void *)0xdeadbeef; + hr = IRawElementProviderSimple_get_HostRawElementProvider(elprov, &elprov2); + ok_(__FILE__, line)(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok_(__FILE__, line)(!!elprov2 == exp_host_prov, "Unexpected provider %p from get_HostRawElementProvider\n", elprov2); elprov2 is set to a specific known value, but there's nothing distinguishing "value isn't changed" from "value is non-null" here.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/3890#note_45892