dmitry Mon Aug 22 09:32:47 2005 EDT Modified files: /php-src/ext/spl php_spl.c /php-src/ext/spl/tests spl_autoload_002.phpt spl_autoload_004.phpt Log: Unicode support http://cvs.php.net/diff.php/php-src/ext/spl/php_spl.c?r1=1.59&r2=1.60&ty=u Index: php-src/ext/spl/php_spl.c diff -u php-src/ext/spl/php_spl.c:1.59 php-src/ext/spl/php_spl.c:1.60 --- php-src/ext/spl/php_spl.c:1.59 Mon Aug 22 08:22:12 2005 +++ php-src/ext/spl/php_spl.c Mon Aug 22 09:32:46 2005 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_spl.c,v 1.59 2005/08/22 12:22:12 dmitry Exp $ */ +/* $Id: php_spl.c,v 1.60 2005/08/22 13:32:46 dmitry Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -341,12 +341,13 @@ HashPosition function_pos; autoload_func_info *alfi; - if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &class_name) == FAILURE || Z_TYPE_PP(class_name) != IS_STRING) { + if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &class_name) == FAILURE || + Z_TYPE_PP(class_name) != (UG(unicode)?IS_UNICODE:IS_STRING)) { return; } if (SPL_G(autoload_functions)) { - lc_name = zend_str_tolower_dup(Z_STRVAL_PP(class_name), Z_STRLEN_PP(class_name)); + lc_name = zend_u_str_tolower_dup(Z_TYPE_PP(class_name), Z_UNIVAL_PP(class_name), Z_UNILEN_PP(class_name)); zend_hash_internal_pointer_reset_ex(SPL_G(autoload_functions), &function_pos); while(zend_hash_has_more_elements_ex(SPL_G(autoload_functions), &function_pos) == SUCCESS && !EG(exception)) { zend_hash_get_current_key_ex(SPL_G(autoload_functions), &func_name, &func_name_len, &dummy, 0, &function_pos); @@ -355,7 +356,7 @@ if (retval) { zval_ptr_dtor(&retval); } - if (zend_hash_exists(EG(class_table), lc_name, Z_STRLEN_PP(class_name)+1)) { + if (zend_u_hash_exists(EG(class_table), Z_TYPE_PP(class_name), lc_name, Z_UNILEN_PP(class_name)+1)) { break; } zend_hash_move_forward_ex(SPL_G(autoload_functions), &function_pos); @@ -415,7 +416,8 @@ } else if (ZEND_NUM_ARGS()) { lc_name = zend_u_str_tolower_dup(func_name_type, func_name, func_name_len); - if (!strcmp(lc_name, "spl_autoload_call")) { + if ((func_name_len == sizeof("spl_autoload_call")-1) && + (ZEND_U_EQUAL(func_name_type, lc_name, func_name_len, "spl_autoload_call", sizeof("spl_autoload_call")-1))) { if (do_throw) { zend_throw_exception_ex(U_CLASS_ENTRY(spl_ce_LogicException), 0 TSRMLS_CC, "Function spl_autoload_call() cannot be registered"); } @@ -475,7 +477,8 @@ lc_name = zend_u_str_tolower_dup(func_name_type, func_name, func_name_len); if (SPL_G(autoload_functions)) { - if (!strcmp(lc_name, "spl_autoload_call")) { + if ((func_name_len == sizeof("spl_autoload_call")-1) && + (ZEND_U_EQUAL(func_name_type, lc_name, func_name_len, "spl_autoload_call", sizeof("spl_autoload_call")-1))) { /* remove all */ zend_hash_destroy(SPL_G(autoload_functions)); FREE_HASHTABLE(SPL_G(autoload_functions)); @@ -486,7 +489,8 @@ /* remove specific */ success = zend_u_hash_del(SPL_G(autoload_functions), func_name_type, lc_name, func_name_len+1); } - } else if (!strcmp(lc_name, "spl_autoload")) { + } else if ((func_name_len == sizeof("spl_autoload")-1) && + (ZEND_U_EQUAL(func_name_type, lc_name, func_name_len, "spl_autoload", sizeof("spl_autoload")-1))) { /* register single spl_autoload() */ zend_hash_find(EG(function_table), "spl_autoload", sizeof("spl_autoload"), (void **) &spl_func_ptr); @@ -529,11 +533,11 @@ MAKE_STD_ZVAL(tmp); array_init(tmp); - add_next_index_string(tmp, (*func_ptr_ptr)->common.scope->name, 1); - add_next_index_string(tmp, (*func_ptr_ptr)->common.function_name, 1); + add_next_index_text(tmp, (*func_ptr_ptr)->common.scope->name, 1); + add_next_index_text(tmp, (*func_ptr_ptr)->common.function_name, 1); add_next_index_zval(return_value, tmp); } else - add_next_index_string(return_value, (*func_ptr_ptr)->common.function_name, 1); + add_next_index_text(return_value, (*func_ptr_ptr)->common.function_name, 1); zend_hash_move_forward_ex(SPL_G(autoload_functions), &function_pos); } @@ -541,7 +545,7 @@ } array_init(return_value); - add_next_index_string(return_value, EG(autoload_func)->common.function_name, 1); + add_next_index_text(return_value, EG(autoload_func)->common.function_name, 1); } /* }}} */ int spl_build_class_list_string(zval **entry, char **list TSRMLS_DC) /* {{{ */ http://cvs.php.net/diff.php/php-src/ext/spl/tests/spl_autoload_002.phpt?r1=1.1&r2=1.2&ty=u Index: php-src/ext/spl/tests/spl_autoload_002.phpt diff -u php-src/ext/spl/tests/spl_autoload_002.phpt:1.1 php-src/ext/spl/tests/spl_autoload_002.phpt:1.2 --- php-src/ext/spl/tests/spl_autoload_002.phpt:1.1 Wed Mar 2 19:20:57 2005 +++ php-src/ext/spl/tests/spl_autoload_002.phpt Mon Aug 22 09:32:46 2005 @@ -66,3 +66,30 @@ } bool(false) ===DONE=== +--UEXPECT-- +bool(false) +array(1) { + [0]=> + unicode(12) "spl_autoload" +} +array(3) { + [0]=> + unicode(12) "spl_autoload" + [1]=> + unicode(16) "SplAutoloadTest1" + [2]=> + unicode(16) "SplAutoloadTest2" +} +array(2) { + [0]=> + unicode(12) "spl_autoload" + [1]=> + unicode(16) "SplAutoloadTest2" +} +bool(false) +array(1) { + [0]=> + unicode(12) "spl_autoload" +} +bool(false) +===DONE=== http://cvs.php.net/diff.php/php-src/ext/spl/tests/spl_autoload_004.phpt?r1=1.1&r2=1.2&ty=u Index: php-src/ext/spl/tests/spl_autoload_004.phpt diff -u php-src/ext/spl/tests/spl_autoload_004.phpt:1.1 php-src/ext/spl/tests/spl_autoload_004.phpt:1.2 --- php-src/ext/spl/tests/spl_autoload_004.phpt:1.1 Wed Aug 10 04:31:57 2005 +++ php-src/ext/spl/tests/spl_autoload_004.phpt Mon Aug 22 09:32:46 2005 @@ -41,3 +41,16 @@ MyAutoLoader::autoLoad(TestClass) bool(false) ===DONE=== +--UEXPECTF-- +array(1) { + [0]=> + array(2) { + [0]=> + unicode(12) "MyAutoLoader" + [1]=> + unicode(8) "autoLoad" + } +} +MyAutoLoader::autoLoad(TestClass) +bool(false) +===DONE===
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php