diff options
author | Gustavo Lopes <glopes@safelinq.com> | 2012-07-23 16:36:24 +0200 |
---|---|---|
committer | Gustavo Lopes <glopes@safelinq.com> | 2012-07-23 16:36:24 +0200 |
commit | 0dfcc3e798cd54714f792bf7507c37b96146ee1b (patch) | |
tree | 1c47a9d2b3a51f0a67e39854dfc663ad09bf8c0d /ext/intl/php_intl.c | |
parent | f43e4f9883047b4be6bd01bf80f070682131ad5f (diff) | |
download | php-git-0dfcc3e798cd54714f792bf7507c37b96146ee1b.tar.gz |
Add ini setting intl.explicit_cleanup
This is to help with looking for leaks. If set to true, this ini
setting forces a call to u_cleanup() on module shutdown.
Diffstat (limited to 'ext/intl/php_intl.c')
-rwxr-xr-x | ext/intl/php_intl.c | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/ext/intl/php_intl.c b/ext/intl/php_intl.c index d7ed9dc6e5..41a1d1c0af 100755 --- a/ext/intl/php_intl.c +++ b/ext/intl/php_intl.c @@ -96,6 +96,7 @@ #include "common/common_enum.h" #include <unicode/uloc.h> +#include <unicode/uclean.h> #include <ext/standard/info.h> #include "php_ini.h" @@ -852,16 +853,39 @@ zend_function_entry intl_functions[] = { }; /* }}} */ +static zend_bool explicit_cleanup = 0; + +static ZEND_INI_MH(OnExplicitCleanupUpdate) +{ + if (stage == PHP_INI_STAGE_STARTUP) { + if (new_value_length == 2 && strcasecmp("on", new_value) == 0) { + explicit_cleanup = (zend_bool)1; + } + else if (new_value_length == 3 && strcasecmp("yes", new_value) == 0) { + explicit_cleanup = (zend_bool)1; + } + else if (new_value_length == 4 && strcasecmp("true", new_value) == 0) { + explicit_cleanup = (zend_bool)1; + } + else { + explicit_cleanup = (zend_bool)atoi(new_value); + } + return SUCCESS; + } else { + return FAILURE; + } +} + /* {{{ INI Settings */ PHP_INI_BEGIN() STD_PHP_INI_ENTRY(LOCALE_INI_NAME, NULL, PHP_INI_ALL, OnUpdateStringUnempty, default_locale, zend_intl_globals, intl_globals) STD_PHP_INI_ENTRY("intl.error_level", "0", PHP_INI_ALL, OnUpdateLong, error_level, zend_intl_globals, intl_globals) STD_PHP_INI_ENTRY("intl.use_exceptions", "0", PHP_INI_ALL, OnUpdateBool, use_exceptions, zend_intl_globals, intl_globals) + PHP_INI_ENTRY_EX("intl.explicit_cleanup", "0", 0, OnExplicitCleanupUpdate, zend_ini_boolean_displayer_cb) PHP_INI_END() /* }}} */ - static PHP_GINIT_FUNCTION(intl); /* {{{ intl_module_entry */ @@ -1003,6 +1027,10 @@ PHP_MSHUTDOWN_FUNCTION( intl ) /* For the default locale php.ini setting */ UNREGISTER_INI_ENTRIES(); + if (explicit_cleanup) { + u_cleanup(); + } + return SUCCESS; } /* }}} */ |