--- embedaddon/php/Zend/zend_API.c 2013/07/22 01:32:15 1.1.1.3 +++ embedaddon/php/Zend/zend_API.c 2013/10/14 08:02:46 1.1.1.4 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend_API.c,v 1.1.1.3 2013/07/22 01:32:15 misho Exp $ */ +/* $Id: zend_API.c,v 1.1.1.4 2013/10/14 08:02:46 misho Exp $ */ #include "zend.h" #include "zend_execute.h" @@ -2514,7 +2514,12 @@ ZEND_API int zend_register_class_alias_ex(const char * 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++; @@ -2779,8 +2784,8 @@ static int zend_is_callable_check_func(int check_flags } if ((check_flags & IS_CALLABLE_CHECK_NO_ACCESS) == 0 && (fcc->calling_scope && - (fcc->calling_scope->__call || - fcc->calling_scope->__callstatic))) { + ((fcc->object_ptr && fcc->calling_scope->__call) || + (!fcc->object_ptr && fcc->calling_scope->__callstatic)))) { if (fcc->function_handler->op_array.fn_flags & ZEND_ACC_PRIVATE) { if (!zend_check_private(fcc->function_handler, fcc->object_ptr ? Z_OBJCE_P(fcc->object_ptr) : EG(scope), lmname, mlen TSRMLS_CC)) { retval = 0; @@ -3917,15 +3922,16 @@ ZEND_API const char* zend_find_alias_name(zend_class_e { zend_trait_alias *alias, **alias_ptr; - alias_ptr = ce->trait_aliases; - alias = *alias_ptr; - while (alias) { - if (alias->alias_len == len && - !strncasecmp(name, alias->alias, alias->alias_len)) { - return alias->alias; - } - alias_ptr++; + if ((alias_ptr = ce->trait_aliases)) { alias = *alias_ptr; + while (alias) { + if (alias->alias_len == len && + !strncasecmp(name, alias->alias, alias->alias_len)) { + return alias->alias; + } + alias_ptr++; + alias = *alias_ptr; + } } return name;