summaryrefslogtreecommitdiff
path: root/ext/reflection/php_reflection.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/reflection/php_reflection.c')
-rw-r--r--ext/reflection/php_reflection.c30
1 files changed, 19 insertions, 11 deletions
diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c
index ebc34e902d..0c9a8dbed1 100644
--- a/ext/reflection/php_reflection.c
+++ b/ext/reflection/php_reflection.c
@@ -457,7 +457,6 @@ static void _class_string(string *str, zend_class_entry *ce, zval *obj, char *in
zend_class_constant *c;
ZEND_HASH_FOREACH_STR_KEY_PTR(&ce->constants_table, key, c) {
- zval_update_constant_ex(&c->value, c->ce);
_class_const_string(str, ZSTR_VAL(key), c, ZSTR_VAL(sub_indent.buf));
} ZEND_HASH_FOREACH_END();
}
@@ -622,12 +621,16 @@ static void _class_string(string *str, zend_class_entry *ce, zval *obj, char *in
static void _const_string(string *str, char *name, zval *value, char *indent)
{
char *type = zend_zval_type_name(value);
- zend_string *value_str = zval_get_string(value);
- string_printf(str, "%s Constant [ %s %s ] { %s }\n",
- indent, type, name, ZSTR_VAL(value_str));
-
- zend_string_release(value_str);
+ if (Z_TYPE_P(value) == IS_ARRAY) {
+ string_printf(str, "%s Constant [ %s %s ] { Array }\n",
+ indent, type, name);
+ } else {
+ zend_string *value_str = zval_get_string(value);
+ string_printf(str, "%s Constant [ %s %s ] { %s }\n",
+ indent, type, name, ZSTR_VAL(value_str));
+ zend_string_release(value_str);
+ }
}
/* }}} */
@@ -635,17 +638,22 @@ static void _const_string(string *str, char *name, zval *value, char *indent)
static void _class_const_string(string *str, char *name, zend_class_constant *c, char *indent)
{
char *visibility = zend_visibility_string(Z_ACCESS_FLAGS(c->value));
- zend_string *value_str;
char *type;
zval_update_constant_ex(&c->value, c->ce);
- value_str = zval_get_string(&c->value);
type = zend_zval_type_name(&c->value);
- string_printf(str, "%sConstant [ %s %s %s ] { %s }\n",
- indent, visibility, type, name, ZSTR_VAL(value_str));
+ if (Z_TYPE(c->value) == IS_ARRAY) {
+ string_printf(str, "%sConstant [ %s %s %s ] { Array }\n",
+ indent, visibility, type, name);
+ } else {
+ zend_string *value_str = zval_get_string(&c->value);
+
+ string_printf(str, "%sConstant [ %s %s %s ] { %s }\n",
+ indent, visibility, type, name, ZSTR_VAL(value_str));
- zend_string_release(value_str);
+ zend_string_release(value_str);
+ }
}
/* }}} */