From ea1ca9c7056ae54af62633b9b1da75df2468833b Mon Sep 17 00:00:00 2001 From: Alberto Massari Date: Thu, 12 Dec 2002 22:59:25 +0000 Subject: [PATCH] Implemented DispCallFunc so that it works when calling event handlers that have no return value. --- dlls/oleaut32/typelib.c | 46 +++++++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 16 deletions(-) diff --git a/dlls/oleaut32/typelib.c b/dlls/oleaut32/typelib.c index 8fd2bfa58b..7c1978f04f 100644 --- a/dlls/oleaut32/typelib.c +++ b/dlls/oleaut32/typelib.c @@ -4101,39 +4101,53 @@ DispCallFunc( DWORD *args; HRESULT hres; - FIXME("(%p, %ld, %d, %d, %d, %p, %p, %p)\n", - pvInstance, oVft, cc, vtReturn, cActuals, prgvt, prgpvarg, pvargResult + TRACE("(%p, %ld, %d, %d, %d, %p, %p, %p (vt=%d))\n", + pvInstance, oVft, cc, vtReturn, cActuals, prgvt, prgpvarg, pvargResult, V_VT(pvargResult) ); - argsize = 0; + /* DispCallFunc is only used to invoke methods belonging to an IDispatch-derived COM interface. + So we need to add a first parameter to the list of arguments, to supply the interface pointer */ + argsize = 1; for (i=0;i