oleaut32: FUNC_DISPATCH from dispinterface should have oVft == 0.
A dispinterface has no vtbl beyond IDispatch itself. Signed-off-by: Kevin Puetz <PuetzKevinA@JohnDeere.com> Signed-off-by: Huw Davies <huw@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
e6108e17a5
commit
03b1b3920c
|
@ -2465,7 +2465,10 @@ MSFT_DoFuncs(TLBContext* pcx,
|
|||
ptfd->funcdesc.callconv = (pFuncRec->FKCCIC) >> 8 & 0xF;
|
||||
ptfd->funcdesc.cParams = pFuncRec->nrargs ;
|
||||
ptfd->funcdesc.cParamsOpt = pFuncRec->nroargs ;
|
||||
ptfd->funcdesc.oVft = (pFuncRec->VtableOffset & ~1) * sizeof(void *) / pTI->pTypeLib->ptr_size;
|
||||
if (ptfd->funcdesc.funckind == FUNC_DISPATCH)
|
||||
ptfd->funcdesc.oVft = 0;
|
||||
else
|
||||
ptfd->funcdesc.oVft = (pFuncRec->VtableOffset & ~1) * sizeof(void *) / pTI->pTypeLib->ptr_size;
|
||||
ptfd->funcdesc.wFuncFlags = LOWORD(pFuncRec->Flags) ;
|
||||
|
||||
/* nameoffset is sometimes -1 on the second half of a propget/propput
|
||||
|
@ -4179,7 +4182,10 @@ static void SLTG_DoFuncs(char *pBlk, char *pFirstItem, ITypeInfoImpl *pTI,
|
|||
pFuncDesc->funcdesc.callconv = pFunc->nacc & 0x7;
|
||||
pFuncDesc->funcdesc.cParams = pFunc->nacc >> 3;
|
||||
pFuncDesc->funcdesc.cParamsOpt = (pFunc->retnextopt & 0x7e) >> 1;
|
||||
pFuncDesc->funcdesc.oVft = (pFunc->vtblpos & ~1) * sizeof(void *) / pTI->pTypeLib->ptr_size;
|
||||
if (pFuncDesc->funcdesc.funckind == FUNC_DISPATCH)
|
||||
pFuncDesc->funcdesc.oVft = 0;
|
||||
else
|
||||
pFuncDesc->funcdesc.oVft = (pFunc->vtblpos & ~1) * sizeof(void *) / pTI->pTypeLib->ptr_size;
|
||||
|
||||
if(pFunc->magic & SLTG_FUNCTION_FLAGS_PRESENT)
|
||||
pFuncDesc->funcdesc.wFuncFlags = pFunc->funcflags;
|
||||
|
|
Loading…
Reference in New Issue