Module: wine Branch: master Commit: 15956152e559d8db116eb9e4f14679d1c84853c3 URL: http://source.winehq.org/git/wine.git/?a=commit;h=15956152e559d8db116eb9e4f1...
Author: Piotr Caban piotr@codeweavers.com Date: Wed Mar 17 22:05:53 2010 +0100
oleaut32: Improve ICreateTypeInfo2 AddImplType implementation.
---
dlls/oleaut32/typelib2.c | 9 +++++++-- 1 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/dlls/oleaut32/typelib2.c b/dlls/oleaut32/typelib2.c index a6e12cd..71d725c 100644 --- a/dlls/oleaut32/typelib2.c +++ b/dlls/oleaut32/typelib2.c @@ -1853,6 +1853,7 @@ static HRESULT WINAPI ICreateTypeInfo2_fnAddImplType( ref->flags = 0; ref->oCustData = -1; ref->onext = -1; + This->typeinfo->cImplTypes++; } else if (This->typekind == TKIND_INTERFACE) { if (This->typeinfo->cImplTypes && index==1) return TYPE_E_BADMODULEKIND; @@ -1860,14 +1861,18 @@ static HRESULT WINAPI ICreateTypeInfo2_fnAddImplType( if( index != 0) return TYPE_E_ELEMENTNOTFOUND;
This->typeinfo->datatype1 = hRefType; + This->typeinfo->cImplTypes = 1; } else if (This->typekind == TKIND_DISPATCH) { - FIXME("dispatch case unhandled.\n"); + if(index != 0) return TYPE_E_ELEMENTNOTFOUND; + + /* FIXME: Check if referenced typeinfo is IDispatch */ + This->typeinfo->flags |= TYPEFLAG_FDISPATCHABLE; + This->typeinfo->cImplTypes = 1; } else { FIXME("AddImplType unsupported on typekind %d\n", This->typekind); return E_OUTOFMEMORY; }
- This->typeinfo->cImplTypes++; return S_OK; }