From 7c85db404f084a4b7945e7a7780188ab71e2a64d Mon Sep 17 00:00:00 2001 From: Vincent Povirk Date: Fri, 12 Mar 2010 14:54:46 -0600 Subject: [PATCH] oleaut32: Return type mismatch errors in ITypeLibComp_fnBind. --- dlls/oleaut32/tests/typelib.c | 2 +- dlls/oleaut32/typelib.c | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/dlls/oleaut32/tests/typelib.c b/dlls/oleaut32/tests/typelib.c index 5aee88d..fed9bde 100644 --- a/dlls/oleaut32/tests/typelib.c +++ b/dlls/oleaut32/tests/typelib.c @@ -150,7 +150,7 @@ static void test_TypeComp(void) /* test getting a function within a TKIND_MODULE with INVOKE_PROPERTYGET */ ulHash = LHashValOfNameSys(SYS_WIN32, LOCALE_NEUTRAL, wszSavePicture); hr = ITypeComp_Bind(pTypeComp, wszSavePicture, ulHash, INVOKE_PROPERTYGET, &pTypeInfo, &desckind, &bindptr); - todo_wine ok(hr == TYPE_E_TYPEMISMATCH, + ok(hr == TYPE_E_TYPEMISMATCH, "ITypeComp_Bind should have failed with TYPE_E_TYPEMISMATCH instead of 0x%08x\n", hr); diff --git a/dlls/oleaut32/typelib.c b/dlls/oleaut32/typelib.c index 445eac5..87aba81 100644 --- a/dlls/oleaut32/typelib.c +++ b/dlls/oleaut32/typelib.c @@ -4722,6 +4722,7 @@ static HRESULT WINAPI ITypeLibComp_fnBind( { ITypeLibImpl *This = impl_from_ITypeComp(iface); ITypeInfoImpl *pTypeInfo; + int typemismatch=0; TRACE("(%s, 0x%x, 0x%x, %p, %p, %p)\n", debugstr_w(szName), lHash, wFlags, ppTInfo, pDescKind, pBindPtr); @@ -4761,6 +4762,8 @@ static HRESULT WINAPI ITypeLibComp_fnBind( TRACE("found in module or in enum: %s\n", debugstr_w(szName)); return S_OK; } + else if (hr == TYPE_E_TYPEMISMATCH) + typemismatch = 1; } if ((pTypeInfo->TypeAttr.typekind == TKIND_COCLASS) && @@ -4833,11 +4836,21 @@ static HRESULT WINAPI ITypeLibComp_fnBind( ITypeInfo_AddRef(*ppTInfo); return S_OK; } + else if (hr == TYPE_E_TYPEMISMATCH) + typemismatch = 1; } } - TRACE("name not found %s\n", debugstr_w(szName)); - return S_OK; + if (typemismatch) + { + TRACE("type mismatch %s\n", debugstr_w(szName)); + return TYPE_E_TYPEMISMATCH; + } + else + { + TRACE("name not found %s\n", debugstr_w(szName)); + return S_OK; + } } static HRESULT WINAPI ITypeLibComp_fnBindType( -- 1.6.3.3