From: Dmitry Stogov Date: Thu, 25 Aug 2005 13:53:38 +0000 (+0000) Subject: Fixed memory leaks X-Git-Tag: PRE_NEW_OCI8_EXTENSION~91 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=fc03492c0bf02f1fb9ec12dc27d666d1bff87584;p=php Fixed memory leaks --- diff --git a/Zend/zend.c b/Zend/zend.c index ef30b5f6f9..1f561216be 100644 --- a/Zend/zend.c +++ b/Zend/zend.c @@ -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); + } } } diff --git a/ext/libxml/libxml.c b/ext/libxml/libxml.c index 6c9318a076..3ccb33901e 100644 --- a/ext/libxml/libxml.c +++ b/ext/libxml/libxml.c @@ -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; }