From ed126f68d5359a5f5ca7c7e86fcc66a0019d567c Mon Sep 17 00:00:00 2001 From: Harald Radi Date: Tue, 14 Aug 2001 13:38:36 +0000 Subject: [PATCH] fixed com_invoke retval --- ext/com/COM.c | 4 ++-- ext/rpc/com/com_wrapper.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ext/com/COM.c b/ext/com/COM.c index 47bf78aa92..d411026e10 100644 --- a/ext/com/COM.c +++ b/ext/com/COM.c @@ -109,6 +109,7 @@ PHPAPI HRESULT php_COM_invoke(comval *obj, DISPID dispIdMember, WORD wFlags, DIS EXCEPINFO ExceptInfo; *ErrString = NULL; + /* @todo use DispInvoke here ? */ if (C_ISREFD(obj)) { if (C_HASTLIB(obj)) { hr = C_TYPEINFO_VT(obj)->Invoke(C_TYPEINFO(obj), C_DISPATCH(obj), dispIdMember, wFlags, pDispParams, pVarResult, &ExceptInfo, &ArgErr); @@ -153,8 +154,7 @@ PHPAPI HRESULT php_COM_invoke(comval *obj, DISPID dispIdMember, WORD wFlags, DIS } } - if (!pVarResult) { - VariantInit(pVarResult); + if (pVarResult && (V_VT(pVarResult) == VT_EMPTY)) { V_VT(pVarResult) = VT_I4; V_I4(pVarResult) = hr; } diff --git a/ext/rpc/com/com_wrapper.c b/ext/rpc/com/com_wrapper.c index 47bf78aa92..d411026e10 100644 --- a/ext/rpc/com/com_wrapper.c +++ b/ext/rpc/com/com_wrapper.c @@ -109,6 +109,7 @@ PHPAPI HRESULT php_COM_invoke(comval *obj, DISPID dispIdMember, WORD wFlags, DIS EXCEPINFO ExceptInfo; *ErrString = NULL; + /* @todo use DispInvoke here ? */ if (C_ISREFD(obj)) { if (C_HASTLIB(obj)) { hr = C_TYPEINFO_VT(obj)->Invoke(C_TYPEINFO(obj), C_DISPATCH(obj), dispIdMember, wFlags, pDispParams, pVarResult, &ExceptInfo, &ArgErr); @@ -153,8 +154,7 @@ PHPAPI HRESULT php_COM_invoke(comval *obj, DISPID dispIdMember, WORD wFlags, DIS } } - if (!pVarResult) { - VariantInit(pVarResult); + if (pVarResult && (V_VT(pVarResult) == VT_EMPTY)) { V_VT(pVarResult) = VT_I4; V_I4(pVarResult) = hr; } -- 2.40.0