diff options
author | Anatol Belski <ab@php.net> | 2014-09-26 10:00:10 +0200 |
---|---|---|
committer | Anatol Belski <ab@php.net> | 2014-09-26 10:00:10 +0200 |
commit | 7d11d66957faf878859e96d46c00121bb942ea57 (patch) | |
tree | d27fb014e8bef9f229c0f9008eb46833d5b321cd | |
parent | 06d0230a0ffb0f17c6f3ee4590e8f4761e9dff4a (diff) | |
parent | ed59fa3a0d6ef2ad1a1c99b4b23e9fb82ef02453 (diff) | |
download | php-git-7d11d66957faf878859e96d46c00121bb942ea57.tar.gz |
Merge remote-tracking branch 'origin/master' into native-tls
* origin/master:
NEWS
NEWS
Fixed bug #68103 Dupplicate entry in Reflection
Fixed optimizer bug
fix C89 compat
fix indentation
fix zts build
Use macro
Optimized (PRE|POST)_(INC|DEC) handlers. Moved proxy object handling into helper function.
Conflicts:
Zend/zend_operators.c
-rw-r--r-- | ext/opcache/Optimizer/zend_optimizer.c | 2 | ||||
-rw-r--r-- | ext/reflection/php_reflection.c | 22 |
2 files changed, 18 insertions, 6 deletions
diff --git a/ext/opcache/Optimizer/zend_optimizer.c b/ext/opcache/Optimizer/zend_optimizer.c index 98030611ee..ca000abd36 100644 --- a/ext/opcache/Optimizer/zend_optimizer.c +++ b/ext/opcache/Optimizer/zend_optimizer.c @@ -304,7 +304,7 @@ int zend_optimizer_replace_by_const(zend_op_array *op_array, ZVAL_COPY_VALUE(&old_val, val); zval_copy_ctor(val); zend_optimizer_update_op1_const(op_array, opline, val TSRMLS_CC); - zval_dtor(&old_val); + ZVAL_COPY_VALUE(val, &old_val); opline++; continue; } 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; |