Fixed memory leaks

This commit is contained in:
Dmitry Stogov 2005-08-25 13:53:38 +00:00
parent 0ed53849a5
commit fc03492c0b
2 changed files with 22 additions and 3 deletions

View File

@ -727,8 +727,24 @@ static void zend_u_function_dtor(zend_function *function)
TSRMLS_FETCH();
destroy_zend_function(function TSRMLS_CC);
if (function->type == ZEND_INTERNAL_FUNCTION && function->common.function_name) {
free(function->common.function_name);
if (function->type == ZEND_INTERNAL_FUNCTION) {
if (function->common.function_name) {
free(function->common.function_name);
}
if (function->common.arg_info) {
int n = function->common.num_args;
while (n > 0) {
--n;
if (function->common.arg_info[n].name) {
free(function->common.arg_info[n].name);
}
if (function->common.arg_info[n].class_name) {
free(function->common.arg_info[n].class_name);
}
}
free(function->common.arg_info);
}
}
}

View File

@ -798,11 +798,14 @@ int php_libxml_register_export(zend_class_entry *ce, php_libxml_export_node expo
export_hnd.export_func = export_function;
if (zend_hash_add(&php_libxml_exports, ce->name, ce->name_length + 1, &export_hnd, sizeof(export_hnd), NULL) == SUCCESS) {
int ret;
UChar *uname;
uname = malloc(UBYTES(ce->name_length+1));
u_charsToUChars(ce->name, uname, ce->name_length+1);
return zend_u_hash_add(&php_libxml_exports, IS_UNICODE, uname, ce->name_length + 1, &export_hnd, sizeof(export_hnd), NULL);
ret = zend_u_hash_add(&php_libxml_exports, IS_UNICODE, uname, ce->name_length + 1, &export_hnd, sizeof(export_hnd), NULL);
free(uname);
return ret;
}
return FAILURE;
}