From: Francis De Brabandere <francisdb@gmail.com> Match native behavior: clear *ppv at entry so callers see NULL when AddressOfMember returns an error path (e.g. TYPE_E_BADMODULEKIND for typeinfos with no DLL backing). --- dlls/oleaut32/tests/typelib.c | 2 +- dlls/oleaut32/typelib.c | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/dlls/oleaut32/tests/typelib.c b/dlls/oleaut32/tests/typelib.c index 87ed918dba4..8207e0cf179 100644 --- a/dlls/oleaut32/tests/typelib.c +++ b/dlls/oleaut32/tests/typelib.c @@ -8808,7 +8808,7 @@ static void test_AddressOfMember(void) addr = (void*)0xdeadbeef; hr = ITypeInfo_AddressOfMember(ti, 0x10000000, INVOKE_FUNC, &addr); ok(hr == TYPE_E_BADMODULEKIND, "AddressOfMember hr=%#lx\n", hr); - todo_wine ok(!addr, "AddressOfMember left addr=%p, expected NULL\n", addr); + ok(!addr, "AddressOfMember left addr=%p, expected NULL\n", addr); ITypeInfo_Release(ti); ICreateTypeInfo_Release(createti); diff --git a/dlls/oleaut32/typelib.c b/dlls/oleaut32/typelib.c index e9997a86d24..30c03efbac9 100644 --- a/dlls/oleaut32/typelib.c +++ b/dlls/oleaut32/typelib.c @@ -7998,6 +7998,10 @@ static HRESULT WINAPI ITypeInfo_fnAddressOfMember( ITypeInfo2 *iface, TRACE("%p, %lx, %#x, %p.\n", iface, memid, invKind, ppv); + if (!ppv) + return E_INVALIDARG; + *ppv = NULL; + hr = ITypeInfo2_GetDllEntry(iface, memid, invKind, &dll, &entry, &ordinal); if (FAILED(hr)) return hr; -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10853