From 4a6291508d69fab951562b996ed7223c052a0168 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Tue, 19 Mar 2013 14:56:53 +0400 Subject: Fixed bug #62343 (Show class_alias In get_declared_classes()) --- NEWS | 1 + Zend/tests/bug62343.phpt | 13 +++++++++++++ Zend/zend_builtin_functions.c | 15 ++++++++++++++- 3 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 Zend/tests/bug62343.phpt diff --git a/NEWS b/NEWS index adf868f0f4..c8c6f754a0 100644 --- a/NEWS +++ b/NEWS @@ -5,6 +5,7 @@ PHP NEWS - Core . Fixed bug #64370 (microtime(true) less than $_SERVER['REQUEST_TIME_FLOAT']). (Anatol) + . Fixed bug #62343 (Show class_alias In get_declared_classes()) (Dmitry) - PCRE: . Merged PCRE 8.32). (Anatol) diff --git a/Zend/tests/bug62343.phpt b/Zend/tests/bug62343.phpt new file mode 100644 index 0000000000..b0208c4ac3 --- /dev/null +++ b/Zend/tests/bug62343.phpt @@ -0,0 +1,13 @@ +--TEST-- +Bug #62343 (Show class_alias In get_declared_classes()) +--FILE-- + +--EXPECT-- +string(1) "b" +string(1) "a" diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index 06f14624be..c60cff522c 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -1541,6 +1541,13 @@ ZEND_FUNCTION(restore_exception_handler) } /* }}} */ +static int same_name(const char *key, const char *name, zend_uint name_len) +{ + char *lcname = zend_str_tolower_dup(name, name_len); + int ret = memcmp(lcname, key, name_len) == 0; + efree(lcname); + return ret; +} static int copy_class_or_interface_name(zend_class_entry **pce TSRMLS_DC, int num_args, va_list args, zend_hash_key *hash_key) { @@ -1552,7 +1559,13 @@ static int copy_class_or_interface_name(zend_class_entry **pce TSRMLS_DC, int nu if ((hash_key->nKeyLength==0 || hash_key->arKey[0]!=0) && (comply_mask == (ce->ce_flags & mask))) { - add_next_index_stringl(array, ce->name, ce->name_length, 1); + if (ce->refcount > 1 && + (ce->name_length != hash_key->nKeyLength - 1 || + !same_name(hash_key->arKey, ce->name, ce->name_length))) { + add_next_index_stringl(array, hash_key->arKey, hash_key->nKeyLength - 1, 1); + } else { + add_next_index_stringl(array, ce->name, ce->name_length, 1); + } } return ZEND_HASH_APPLY_KEEP; } -- cgit v1.2.1