From 367d16931ec668ee86b0ceda7cf7c730356765c2 Mon Sep 17 00:00:00 2001 From: Huw Davies Date: Tue, 7 Dec 2004 14:18:29 +0000 Subject: [PATCH] GetFuncIndexOfMemId should respect invkind and return TYPE_E_ELEMENTNOTFOUND if the function cannot be found. --- dlls/oleaut32/typelib.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/dlls/oleaut32/typelib.c b/dlls/oleaut32/typelib.c index 5f2b2ebb9f5..32d56d298d5 100644 --- a/dlls/oleaut32/typelib.c +++ b/dlls/oleaut32/typelib.c @@ -5249,18 +5249,18 @@ static HRESULT WINAPI ITypeInfo2_fnGetFuncIndexOfMemId( ITypeInfo2 * iface, TLBFuncDesc *pFuncInfo; int i; HRESULT result; - /* FIXME: should check for invKind??? */ - for(i=0, pFuncInfo=This->funclist;pFuncInfo && - memid != pFuncInfo->funcdesc.memid; i++, pFuncInfo=pFuncInfo->next); - if(pFuncInfo){ - *pFuncIndex=i; - result= S_OK; - }else{ - *pFuncIndex=0; - result=E_INVALIDARG; - } + + for(i = 0, pFuncInfo = This->funclist; pFuncInfo; i++, pFuncInfo=pFuncInfo->next) + if(memid == pFuncInfo->funcdesc.memid && (invKind & pFuncInfo->funcdesc.invkind)) + break; + if(pFuncInfo) { + *pFuncIndex = i; + result = S_OK; + } else + result = TYPE_E_ELEMENTNOTFOUND; + TRACE("(%p) memid 0x%08lx invKind 0x%04x -> %s\n", This, - memid, invKind, SUCCEEDED(result)? "SUCCES":"FAILED"); + memid, invKind, SUCCEEDED(result) ? "SUCCESS" : "FAILED"); return result; } -- 2.11.4.GIT