summaryrefslogtreecommitdiff
path: root/ext/reflection/php_reflection.c
diff options
context:
space:
mode:
authorNikita Popov <nikic@php.net>2016-05-10 12:17:54 +0200
committerNikita Popov <nikic@php.net>2016-05-10 12:17:54 +0200
commit20560da118f888ff4fdcd0ec88aea8a3f911eff4 (patch)
treeec82794a4d88337f0a9f61e53de773cd5eb3ffb3 /ext/reflection/php_reflection.c
parente6d4a9e2d29fe201acdcc13f1c0b39e9bdd15163 (diff)
parenta1ed4ab3caf33b59742897b43462d033864bb490 (diff)
downloadphp-git-20560da118f888ff4fdcd0ec88aea8a3f911eff4.tar.gz
Merge branch 'PHP-7.0'
Conflicts: ext/reflection/php_reflection.c
Diffstat (limited to 'ext/reflection/php_reflection.c')
-rw-r--r--ext/reflection/php_reflection.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c
index 2a7ff61957..38cfec6aa9 100644
--- a/ext/reflection/php_reflection.c
+++ b/ext/reflection/php_reflection.c
@@ -5649,9 +5649,16 @@ ZEND_METHOD(reflection_property, getValue)
}
zend_unmangle_property_name_ex(ref->prop.name, &class_name, &prop_name, &prop_name_len);
- member_p = zend_read_property(ref->ce, object, prop_name, prop_name_len, 1, &rv);
- ZVAL_DEREF(member_p);
- ZVAL_COPY(return_value, member_p);
+ member_p = zend_read_property(ref->ce, object, prop_name, prop_name_len, 0, &rv);
+ if (member_p != &rv) {
+ ZVAL_DEREF(member_p);
+ ZVAL_COPY(return_value, member_p);
+ } else {
+ if (Z_ISREF_P(member_p)) {
+ zend_unwrap_reference(member_p);
+ }
+ ZVAL_COPY_VALUE(return_value, member_p);
+ }
}
}
/* }}} */