When a dispinterface isn't dual, we should return

TYPE_E_ELEMENTNOTFOUND when trying to get index -1.
This commit is contained in:
Huw Davies 2005-10-18 14:09:47 +00:00 committed by Alexandre Julliard
parent fc94b1c72c
commit 284687a621
1 changed files with 15 additions and 9 deletions

View File

@ -4338,7 +4338,8 @@ static HRESULT WINAPI ITypeInfo_fnGetRefTypeOfImplType(
HREFTYPE *pRefType)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
int(i);
int i;
HRESULT hr = S_OK;
TLBImplType *pImpl = This->impltypelist;
TRACE("(%p) index %d\n", This, index);
@ -4358,8 +4359,7 @@ static HRESULT WINAPI ITypeInfo_fnGetRefTypeOfImplType(
}
else
{
if (!pImpl) return TYPE_E_ELEMENTNOTFOUND;
*pRefType = pImpl->hRef;
hr = TYPE_E_ELEMENTNOTFOUND;
}
}
else
@ -4370,15 +4370,21 @@ static HRESULT WINAPI ITypeInfo_fnGetRefTypeOfImplType(
pImpl = pImpl->next;
}
if (!pImpl) return TYPE_E_ELEMENTNOTFOUND;
*pRefType = pImpl->hRef;
TRACE("-- 0x%08lx\n", pImpl->hRef );
if (pImpl)
*pRefType = pImpl->hRef;
else
hr = TYPE_E_ELEMENTNOTFOUND;
}
return S_OK;
if(TRACE_ON(ole))
{
if(SUCCEEDED(hr))
TRACE("SUCCESS -- hRef = 0x%08lx\n", *pRefType );
else
TRACE("FAILURE -- hresult = 0x%08lx\n", hr);
}
return hr;
}
/* ITypeInfo::GetImplTypeFlags