From: Sterling Hughes Date: Fri, 18 Apr 2003 18:40:53 +0000 (+0000) Subject: Patch by Marcus Börger to fix some memleaks X-Git-Tag: SPL_ALPHA~174 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=48b3303217198663254c3cf312a8521a08b1420d;p=php Patch by Marcus Börger to fix some memleaks --- diff --git a/Zend/zend.c b/Zend/zend.c index beb38d1a01..488aa3fa7a 100644 --- a/Zend/zend.c +++ b/Zend/zend.c @@ -382,6 +382,10 @@ static void register_standard_class(TSRMLS_D) zend_hash_add(GLOBAL_CLASS_TABLE, "stdclass", sizeof("stdclass"), &zend_standard_class_def, sizeof(zend_class_entry *), NULL); } +static void unregister_standard_class() +{ + destroy_zend_class(&zend_standard_class_def); +} static void zend_set_default_compile_time_values(TSRMLS_D) { @@ -657,17 +661,19 @@ void zend_shutdown(TSRMLS_D) zend_hash_graceful_reverse_destroy(&module_registry); zend_destroy_rsrc_list_dtors(); -#ifndef ZTS - /* In ZTS mode these are freed by compiler_globals_dtor() */ zend_hash_destroy(GLOBAL_FUNCTION_TABLE); zend_hash_destroy(GLOBAL_CLASS_TABLE); -#endif zend_hash_destroy(GLOBAL_AUTO_GLOBALS_TABLE); free(GLOBAL_AUTO_GLOBALS_TABLE); zend_shutdown_extensions(TSRMLS_C); free(zend_version_info); + zend_shutdown_constants(TSRMLS_C); +#ifdef ZTS + zend_hash_destroy(GLOBAL_CONSTANTS_TABLE); +#endif + unregister_standard_class(); } diff --git a/Zend/zend_opcode.c b/Zend/zend_opcode.c index 302a715ff2..af9ff1450e 100644 --- a/Zend/zend_opcode.c +++ b/Zend/zend_opcode.c @@ -173,6 +173,12 @@ ZEND_API void destroy_zend_class(zend_class_entry **pce) free(ce->static_members); zend_hash_destroy(&ce->constants_table); zend_hash_destroy(&ce->class_table); + if (ce->num_interfaces > 0) { + free(ce->interfaces); + } + if (ce->doc_comment) { + free(ce->doc_comment); + } free(ce); break; case ZEND_USER_NAMESPACE: