Module: wine Branch: master Commit: af1c1484d71fd560520046efa441c23bf80093f1 URL: http://source.winehq.org/git/wine.git/?a=commit;h=af1c1484d71fd560520046efa4...
Author: Piotr Caban piotr.caban@gmail.com Date: Fri Apr 11 01:10:07 2008 +0200
oleview: Skip IDispatch functions in dual interfaces properly.
---
programs/oleview/typelib.c | 11 ++++++++--- 1 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/programs/oleview/typelib.c b/programs/oleview/typelib.c index 217ce7d..922fa11 100644 --- a/programs/oleview/typelib.c +++ b/programs/oleview/typelib.c @@ -512,12 +512,17 @@ static int EnumFuncs(ITypeInfo *pTypeInfo, TYPEATTR *pTypeAttr, HTREEITEM hParen
cFuncs = pTypeAttr->cFuncs;
- for(i=0; i<cFuncs; i++) + i = 0; + if(pTypeAttr->wTypeFlags & TYPEFLAG_FDUAL) { /* skip 7 members of IDispatch */ + cFuncs += 7; + i += 7; + } + + for(; i<cFuncs; i++) { TYPELIB_DATA *tld;
if(FAILED(ITypeInfo_GetFuncDesc(pTypeInfo, i, &pFuncDesc))) continue; - if(pTypeAttr->wTypeFlags & TYPEFLAG_FDUAL && pFuncDesc->memid >= MIN_FUNC_ID) continue;
if(FAILED(ITypeInfo_GetDocumentation(pTypeInfo, pFuncDesc->memid, &bstrName, &bstrHelpString, NULL, NULL))) continue; @@ -529,7 +534,7 @@ static int EnumFuncs(ITypeInfo *pTypeInfo, TYPEATTR *pTypeAttr, HTREEITEM hParen U(tvis).item.pszText = bstrName; U(tvis).item.lParam = (LPARAM) tld; bFirst = TRUE; - if(pFuncDesc->memid < MIN_FUNC_ID) + if(pFuncDesc->memid < MIN_FUNC_ID || pTypeAttr->wTypeFlags & TYPEFLAG_FDUAL) { AddToTLDataStrW(tld, wszOpenBrackets1); bFirst = FALSE;