From: Andrei Zmievski Date: Fri, 6 Oct 2006 17:11:17 +0000 (+0000) Subject: Unicode string support for extension_loaded(). X-Git-Tag: RELEASE_1_0_0RC1~1391 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=706d7a3b55e1bc4619875784f2055d04fecd6338;p=php Unicode string support for extension_loaded(). --- diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index 10fd9e0e89..5277a11c65 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -2192,21 +2192,34 @@ ZEND_FUNCTION(debug_backtrace) } /* }}} */ -/* {{{ proto bool extension_loaded(string extension_name) +/* {{{ proto bool extension_loaded(string extension_name) U Returns true if the named extension is loaded */ ZEND_FUNCTION(extension_loaded) { - zval **extension_name; - char *lcname; + zstr ext; + int ext_len; + zend_uchar ext_type; + char *name, *lcname; - if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &extension_name)) { - ZEND_WRONG_PARAM_COUNT(); + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "t", &ext, &ext_len, &ext_type) == FAILURE) { + return; + } + + if (ext_type == IS_UNICODE) { + name = zend_unicode_to_ascii(ext.u, ext_len TSRMLS_CC); + if (name == NULL) { + zend_error(E_WARNING, "Extension name has to consist only of ASCII characters"); + RETURN_FALSE; + } + } else { + name = ext.s; } - /* UTODO: using runtime encoding? */ - convert_to_string_ex(extension_name); - lcname = zend_str_tolower_dup(Z_STRVAL_PP(extension_name), Z_STRLEN_PP(extension_name)); - if (zend_hash_exists(&module_registry, lcname, Z_STRLEN_PP(extension_name)+1)) { + lcname = zend_str_tolower_dup(name, ext_len); + if (ext_type == IS_UNICODE) { + efree(name); + } + if (zend_hash_exists(&module_registry, lcname, ext_len+1)) { RETVAL_TRUE; } else { RETVAL_FALSE;