cvs: php4(EXPERIMENTAL) /ext/com COM.c conversion.c php_COM.h

From: Date: Thu, 26 Jul 2001 14:45:40 +0000
Subject: cvs: php4(EXPERIMENTAL) /ext/com COM.c conversion.c php_COM.h
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-6353@lists.php.net to get a copy of this message
phanto Thu Jul 26 10:45:40 2001 EDT Modified files: (Branch: EXPERIMENTAL) /php4/ext/com COM.c conversion.c php_COM.h Log: again fixed a few memory issues Index: php4/ext/com/COM.c diff -u php4/ext/com/COM.c:1.29.2.3 php4/ext/com/COM.c:1.29.2.4 --- php4/ext/com/COM.c:1.29.2.3 Thu Jul 26 09:20:43 2001 +++ php4/ext/com/COM.c Thu Jul 26 10:45:39 2001 @@ -81,7 +81,7 @@ PHPAPI HRESULT php_COM_release(comval *obj); PHPAPI HRESULT php_COM_addref(comval *obj); PHPAPI HRESULT php_COM_destruct(comval *obj); -PHPAPI HRESULT php_COM_set(comval *obj, IDispatch FAR* pDisp, int cleanup); +PHPAPI HRESULT php_COM_set(comval *obj, IDispatch FAR* FAR* pDisp, int cleanup); PHPAPI HRESULT php_COM_clone(comval *obj, comval *clone, int cleanup); PHPAPI int php_COM_get_le_comval(); @@ -236,12 +236,19 @@ return obj->refcount; } -PHPAPI HRESULT php_COM_set(comval *obj, IDispatch FAR* pDisp, int cleanup) +PHPAPI HRESULT php_COM_set(comval *obj, IDispatch FAR* FAR* ppDisp, int cleanup) { HRESULT hr = 1; DISPPARAMS dispparams; VARIANT *var_result; + IDispatch FAR* pDisp; + pDisp = *ppDisp; + if(cleanup) + { + *ppDisp = NULL; + } + C_REFCOUNT(obj) = 1; C_DISPATCH(obj) = pDisp; C_HASTLIB(obj) = SUCCEEDED(C_DISPATCH_VT(obj)->GetTypeInfo(C_DISPATCH(obj), 0, LANG_NEUTRAL, &C_TYPEINFO(obj))); @@ -610,7 +617,7 @@ } } - php_COM_set(obj, C_DISPATCH(obj), TRUE); + php_COM_set(obj, &C_DISPATCH(obj), TRUE); if(INI_INT("com.autoregister_casesensitive")) { @@ -865,7 +872,7 @@ RETURN_FALSE; } - php_variant_to_pval(var_result, return_value, 0, codepage); + php_variant_to_pval(var_result, return_value, FALSE, codepage); FREE_VARIANT(var_result); efree(arguments); @@ -1066,7 +1073,7 @@ if(SUCCEEDED(hr)) { - php_variant_to_pval(var_result, return_value, 0, codepage); + php_variant_to_pval(var_result, return_value, FALSE, codepage); } else { @@ -1112,7 +1119,7 @@ RETURN_FALSE; } - php_variant_to_pval(var_result, return_value, 0, codepage); + php_variant_to_pval(var_result, return_value, FALSE, codepage); FREE_VARIANT(var_result); } @@ -1261,7 +1268,7 @@ } obj = obj_prop; - php_COM_set(obj, V_DISPATCH(var_result), TRUE); + php_COM_set(obj, &V_DISPATCH(var_result), TRUE); RETVAL_COM(obj); } @@ -1347,7 +1354,7 @@ } obj = obj_prop; - php_COM_set(obj, V_DISPATCH(var_result), TRUE); + php_COM_set(obj, &V_DISPATCH(var_result), TRUE); } else { @@ -1449,11 +1456,10 @@ } else { - php_variant_to_pval(var_result, return_value, 0, codepage); + php_variant_to_pval(var_result, return_value, FALSE, codepage); } -// FREE_VARIANT(var_result); - efree(var_result); + FREE_VARIANT(var_result); efree(arguments); } Index: php4/ext/com/conversion.c diff -u php4/ext/com/conversion.c:1.22.2.4 php4/ext/com/conversion.c:1.22.2.5 --- php4/ext/com/conversion.c:1.22.2.4 Thu Jul 26 09:20:43 2001 +++ php4/ext/com/conversion.c Thu Jul 26 10:45:40 2001 @@ -754,8 +754,8 @@ else { ALLOC_COM(obj); - php_COM_set(obj, V_DISPATCH(var_arg), TRUE); - + php_COM_set(obj, &V_DISPATCH(var_arg), TRUE); + ZVAL_COM(pval_arg, obj); } } Index: php4/ext/com/php_COM.h diff -u php4/ext/com/php_COM.h:1.7.2.1 php4/ext/com/php_COM.h:1.7.2.2 --- php4/ext/com/php_COM.h:1.7.2.1 Thu Jul 12 19:40:54 2001 +++ php4/ext/com/php_COM.h Thu Jul 26 10:45:40 2001 @@ -15,7 +15,7 @@ extern PHPAPI HRESULT php_COM_release(comval *obj); extern PHPAPI HRESULT php_COM_addref(comval *obj); extern PHPAPI HRESULT php_COM_destruct(comval *obj); -extern PHPAPI HRESULT php_COM_set(comval *obj, IDispatch FAR* pDisp, int cleanup); +extern PHPAPI HRESULT php_COM_set(comval *obj, IDispatch FAR* FAR* pDisp, int cleanup); extern PHPAPI HRESULT php_COM_clone(comval *obj, comval *clone, int cleanup); extern int php_COM_get_le_comval();

« previous php.cvs (#6353) next »