From e9eb274db28e23db38b609e6719f1ee81b3b276e Mon Sep 17 00:00:00 2001 From: Huw Davies Date: Thu, 11 Jun 2020 09:03:06 +0100 Subject: [PATCH] oleaut32: Return early if there is no matching funcdesc. Signed-off-by: Huw Davies Signed-off-by: Alexandre Julliard --- dlls/oleaut32/typelib.c | 36 ++++++++++++++++-------------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/dlls/oleaut32/typelib.c b/dlls/oleaut32/typelib.c index f8d71368345..ab421fec90d 100644 --- a/dlls/oleaut32/typelib.c +++ b/dlls/oleaut32/typelib.c @@ -7805,28 +7805,24 @@ static HRESULT WINAPI ITypeInfo_fnGetDllEntry( ITypeInfo2 *iface, MEMBERID memid return TYPE_E_BADMODULEKIND; pFDesc = TLB_get_funcdesc_by_memberid(This, memid); - if(pFDesc){ - dump_TypeInfo(This); - if (TRACE_ON(ole)) - dump_TLBFuncDescOne(pFDesc); + if (!pFDesc) return TYPE_E_ELEMENTNOTFOUND; - if (pBstrDllName) - *pBstrDllName = SysAllocString(TLB_get_bstr(This->DllName)); + dump_TypeInfo(This); + if (TRACE_ON(ole)) dump_TLBFuncDescOne(pFDesc); - if (!IS_INTRESOURCE(pFDesc->Entry) && (pFDesc->Entry != (void*)-1)) { - if (pBstrName) - *pBstrName = SysAllocString(TLB_get_bstr(pFDesc->Entry)); - if (pwOrdinal) - *pwOrdinal = -1; - return S_OK; - } - if (pBstrName) - *pBstrName = NULL; - if (pwOrdinal) - *pwOrdinal = LOWORD(pFDesc->Entry); - return S_OK; - } - return TYPE_E_ELEMENTNOTFOUND; + if (pBstrDllName) *pBstrDllName = SysAllocString(TLB_get_bstr(This->DllName)); + + if (!IS_INTRESOURCE(pFDesc->Entry) && (pFDesc->Entry != (void*)-1)) + { + if (pBstrName) *pBstrName = SysAllocString(TLB_get_bstr(pFDesc->Entry)); + if (pwOrdinal) *pwOrdinal = -1; + } + else + { + if (pBstrName) *pBstrName = NULL; + if (pwOrdinal) *pwOrdinal = LOWORD(pFDesc->Entry); + } + return S_OK; } /* internal function to make the inherited interfaces' methods appear