From: Edward O'Callaghan <edward(a)antitrust.cc> The methods fnFindName and fnIsName() are almost identical. Consistently match them where possible, paving the way for a common internal worker implementation. Signed-off-by: Edward O'Callaghan <edward(a)antitrust.cc> --- dlls/oleaut32/typelib.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/dlls/oleaut32/typelib.c b/dlls/oleaut32/typelib.c index b0845c0132d..3413632da76 100644 --- a/dlls/oleaut32/typelib.c +++ b/dlls/oleaut32/typelib.c @@ -5019,27 +5019,33 @@ static HRESULT WINAPI ITypeLib2_fnIsName( { ITypeLibImpl *This = impl_from_ITypeLib2(iface); int tic; - UINT fdc, vrc; TRACE("%p, %s, %#lx, %p.\n", iface, debugstr_w(szNameBuf), lHashVal, pfName); *pfName=TRUE; for(tic = 0; tic < This->TypeInfoCount; ++tic){ ITypeInfoImpl *pTInfo = This->typeinfos[tic]; - if(!lstrcmpiW(TLB_get_bstr(pTInfo->Name), szNameBuf)) goto ITypeLib2_fnIsName_exit; + UINT fdc; + + if(!lstrcmpiW(TLB_get_bstr(pTInfo->Name), szNameBuf)) + goto ITypeLib2_fnIsName_exit; + for(fdc = 0; fdc < pTInfo->typeattr.cFuncs; ++fdc) { TLBFuncDesc *pFDesc = &pTInfo->funcdescs[fdc]; + + if(!lstrcmpiW(TLB_get_bstr(pFDesc->Name), szNameBuf)) + goto ITypeLib2_fnIsName_exit; + int pc; - if(!lstrcmpiW(TLB_get_bstr(pFDesc->Name), szNameBuf)) goto ITypeLib2_fnIsName_exit; for(pc=0; pc < pFDesc->funcdesc.cParams; pc++){ if(!lstrcmpiW(TLB_get_bstr(pFDesc->pParamDesc[pc].Name), szNameBuf)) goto ITypeLib2_fnIsName_exit; } } - for(vrc = 0; vrc < pTInfo->typeattr.cVars; ++vrc){ - TLBVarDesc *pVDesc = &pTInfo->vardescs[vrc]; - if(!lstrcmpiW(TLB_get_bstr(pVDesc->Name), szNameBuf)) goto ITypeLib2_fnIsName_exit; - } + + TLBVarDesc *pVDesc = TLB_get_vardesc_by_name(pTInfo, szNameBuf); + if (pVDesc) + goto ITypeLib2_fnIsName_exit; } *pfName=FALSE; -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/7286