]> granicus.if.org Git - php/commitdiff
fixed com_invoke retval
authorHarald Radi <phanto@php.net>
Tue, 14 Aug 2001 13:38:36 +0000 (13:38 +0000)
committerHarald Radi <phanto@php.net>
Tue, 14 Aug 2001 13:38:36 +0000 (13:38 +0000)
ext/com/COM.c
ext/rpc/com/com_wrapper.c

index 47bf78aa92d3555b6e1bd3810f66ec41d53ea1d4..d411026e10a4d836f9592032a3418d7f6fe5f147 100644 (file)
@@ -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;
                }
index 47bf78aa92d3555b6e1bd3810f66ec41d53ea1d4..d411026e10a4d836f9592032a3418d7f6fe5f147 100644 (file)
@@ -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;
                }