Commit: dfc6feb6e84f27094e6a2e3947caa094f7c35d26 Author: Dmitry Stogov <dmi...@zend.com> Thu, 29 Aug 2013 11:16:56 +0400 Parents: 15694f66b2732962b760463803a68a1fa3bb098f Branches: PHP-5.4 PHP-5.5 master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=dfc6feb6e84f27094e6a2e3947caa094f7c35d26 Log: Fixed bug #61759 (class_alias() should accept classes with leading backslashes). (Julien) Bugs: https://bugs.php.net/61759 Changed paths: M Zend/zend_API.c M Zend/zend_builtin_functions.c Diff: diff --git a/Zend/zend_API.c b/Zend/zend_API.c index 620a8f0..125a1a2 100644 --- a/Zend/zend_API.c +++ b/Zend/zend_API.c @@ -2514,7 +2514,12 @@ ZEND_API int zend_register_class_alias_ex(const char *name, int name_len, zend_c char *lcname = zend_str_tolower_dup(name, name_len); int ret; - ret = zend_hash_add(CG(class_table), lcname, name_len+1, &ce, sizeof(zend_class_entry *), NULL); + if (lcname[0] == '\\') { + ret = zend_hash_add(CG(class_table), lcname+1, name_len, &ce, sizeof(zend_class_entry *), NULL); + } else { + ret = zend_hash_add(CG(class_table), lcname, name_len+1, &ce, sizeof(zend_class_entry *), NULL); + } + efree(lcname); if (ret == SUCCESS) { ce->refcount++; diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index 72d9058..04f4ebe 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -1399,15 +1399,8 @@ ZEND_FUNCTION(class_alias) return; } - if (!autoload) { - lc_name = do_alloca(class_name_len + 1, use_heap); - zend_str_tolower_copy(lc_name, class_name, class_name_len); + found = zend_lookup_class_ex(class_name, class_name_len, NULL, autoload, &ce TSRMLS_CC); - found = zend_hash_find(EG(class_table), lc_name, class_name_len+1, (void **) &ce); - free_alloca(lc_name, use_heap); - } else { - found = zend_lookup_class(class_name, class_name_len, &ce TSRMLS_CC); - } if (found == SUCCESS) { if ((*ce)->type == ZEND_USER_CLASS) { if (zend_register_class_alias_ex(alias_name, alias_name_len, *ce TSRMLS_CC) == SUCCESS) { -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php