cvs: php4(EXPERIMENTAL) /ext/com COM.c conversion.c php_COM.h
| From: | Harald Radi | 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();