The recent fixes to the COM extension (for the 4_3 branch) have helped
with a lot of the memory leaking that was occuring. Working with
the latest snapshot I've done some additional work to clean up the
few remaining leaks I am seeing in my COM calls. I believe that the
two patches below eliminate all the overloaded COM memory leaks in
the 4_3 branch.
1) In php_COM_call_function_handler() the constructor block is:
if (zend_llist_count(property_reference->elements_list)==1
&& !strcmp(Z_STRVAL(function_name->element), "com")) {
/* constructor */
PHP_FN(com_load)(INTERNAL_FUNCTION_PARAM_PASSTHRU);
*object = *return_value;
pval_copy_constructor(object);
pval_destructor(&function_name->element);
return;
}
After tracing the memory leaks that PHP reports when executing "$xml =
new COM('MSXML.DOMDocument');" I believe that the issue is the
replacing of *object with *return_value. The original allocated memory
of *object is now lost (and PHP reports it as a leak in the debug
version). I added a "zval_dtor(object);" just before replacing the
value of *object and the memory leaks are cleared up.
2) At the bottom of do_COM_propput() is this line:
efree(new_value); // FREE_VARIANT does a VariantClear() which is not
desired here !
Back in September (around the release of 4.2.3) I asked about why this
change was made as it causes the value that is being put to never be
released (as referenced in PHP Weekly Summaries #101 and #103). If I
revert this to FREE_VARIANT() (along with the first patch) it
eliminates all the memory leaks I am seeing with the overload COM
running under the ISAPI.
I have done initial testing of the COM usage in my PHP code with both
these patches and haven't seen any problems. I haven't had any luck
getting a response from the authors of the code areas in question.
Is there someone else who can consider these patches (in particular why
the FREE_VARIANT was changed to an efree)?
Michael Sisolak
[EMAIL PROTECTED]
__________________________________________________
Do you Yahoo!?
Yahoo! Tax Center - forms, calculators, tips, more
http://taxes.yahoo.com/
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php