summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRemi Collet <remi@php.net>2014-09-26 09:28:02 +0200
committerRemi Collet <remi@php.net>2014-09-26 09:28:02 +0200
commited59fa3a0d6ef2ad1a1c99b4b23e9fb82ef02453 (patch)
tree45b443d849af6d560c7c5881c2839f453c4877f4
parentbd76544e153ae4198fc1f39ad61653709a1afc9c (diff)
parentd19356948a20821e3663edae9ece5f53cb627da2 (diff)
downloadphp-git-ed59fa3a0d6ef2ad1a1c99b4b23e9fb82ef02453.tar.gz
Fixed bug #68103 Dupplicate entry in Reflection (merged)
-rw-r--r--ext/reflection/php_reflection.c22
1 files changed, 17 insertions, 5 deletions
diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c
index c99f066834..2c29229e8e 100644
--- a/ext/reflection/php_reflection.c
+++ b/ext/reflection/php_reflection.c
@@ -995,9 +995,12 @@ static int _extension_class_string(zval *el TSRMLS_DC, int num_args, va_list arg
int *num_classes = va_arg(args, int*);
if ((ce->type == ZEND_INTERNAL_CLASS) && ce->info.internal.module && !strcasecmp(ce->info.internal.module->name, module->name)) {
- string_printf(str, "\n");
- _class_string(str, ce, NULL, indent TSRMLS_CC);
- (*num_classes)++;
+ /* dump class if it is not an alias */
+ if (!zend_binary_strcasecmp(ce->name->val, ce->name->len, hash_key->key->val, hash_key->key->len)) {
+ string_printf(str, "\n");
+ _class_string(str, ce, NULL, indent TSRMLS_CC);
+ (*num_classes)++;
+ }
}
return ZEND_HASH_APPLY_KEEP;
}
@@ -5320,11 +5323,20 @@ static int add_extension_class(zval *zv TSRMLS_DC, int num_args, va_list args, z
int add_reflection_class = va_arg(args, int);
if ((ce->type == ZEND_INTERNAL_CLASS) && ce->info.internal.module && !strcasecmp(ce->info.internal.module->name, module->name)) {
+ zend_string *name;
+
+ if (zend_binary_strcasecmp(ce->name->val, ce->name->len, hash_key->key->val, hash_key->key->len)) {
+ /* This is an class alias, use alias name */
+ name = hash_key->key;
+ } else {
+ /* Use class name */
+ name = ce->name;
+ }
if (add_reflection_class) {
zend_reflection_class_factory(ce, &zclass TSRMLS_CC);
- zend_hash_update(Z_ARRVAL_P(class_array), ce->name, &zclass);
+ zend_hash_update(Z_ARRVAL_P(class_array), name, &zclass);
} else {
- add_next_index_str(class_array, zend_string_copy(ce->name));
+ add_next_index_str(class_array, zend_string_copy(name));
}
}
return ZEND_HASH_APPLY_KEEP;