cvs: php4 /ext/com COM.c
| From: | Harald Radi | Date: | Thu, 03 May 2001 11:20:30 +0000 |
| Subject: | cvs: php4 /ext/com COM.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-5502@lists.php.net to get a copy of this message | ||
phanto Thu May 3 04:20:30 2001 EDT
Modified files:
/php4/ext/com COM.c
Log:
fixed leaky code
#cleaned up dirty hack from yesterday
Index: php4/ext/com/COM.c
diff -u php4/ext/com/COM.c:1.9 php4/ext/com/COM.c:1.10
--- php4/ext/com/COM.c:1.9 Wed May 2 14:51:18 2001
+++ php4/ext/com/COM.c Thu May 3 04:20:28 2001
@@ -672,7 +672,8 @@
obj_prop = (i_dispatch *) emalloc(sizeof(i_dispatch));
php_COM_clone(obj_prop, obj, FALSE);
-
+
+ //leak !!!
var_result = (VARIANT *) emalloc(sizeof(VARIANT));
var_result->vt = VT_DISPATCH;
var_result->pdispVal = obj_prop->i.dispatch;
@@ -705,7 +706,6 @@
break;
case OE_IS_METHOD:
-// var_result->pdispVal = obj_prop->i.dispatch;
efree(obj_prop);
return var_result;
break;
@@ -832,25 +832,28 @@
i_dispatch *obj;
pval **arguments;
int arg_count = ZEND_NUM_ARGS();
- VARIANTARG var_result;
-
- var_result.vt = VT_EMPTY;
+ VARIANT *var_result;
obj = (i_dispatch *) emalloc(sizeof(i_dispatch));
- php_COM_set(obj, _php_COM_get_property_handler(property_reference)->pdispVal, TRUE);
+
+ var_result = _php_COM_get_property_handler(property_reference);
+ php_COM_set(obj, var_result->pdispVal, TRUE);
+
+ var_result->vt = VT_EMPTY;
arguments = (pval **) emalloc(sizeof(pval *)*arg_count);
getParametersArray(ht, arg_count, arguments);
-
- if (do_COM_invoke(obj , &function_name->element, &var_result, arguments,
arg_count)==FAILURE) {
+
+ if (do_COM_invoke(obj , &function_name->element, var_result, arguments,
arg_count)==FAILURE) {
RETVAL_FALSE;
}
pval_destructor(&function_name->element);
php_COM_release(obj);
+ php_variant_to_pval(var_result, return_value, 0, codepage);
efree(obj);
+ efree(var_result);
efree(arguments);
- php_variant_to_pval(&var_result, return_value, 0, codepage);
}
for (overloaded_property = (zend_overloaded_element *)
zend_llist_get_first(property_reference->elements_list);