From fc03492c0bf02f1fb9ec12dc27d666d1bff87584 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Thu, 25 Aug 2005 13:53:38 +0000 Subject: [PATCH] Fixed memory leaks --- Zend/zend.c | 20 ++++++++++++++++++-- ext/libxml/libxml.c | 5 ++++- 2 files changed, 22 insertions(+), 3 deletions(-) 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; } -- 2.50.1