diff options
author | Nikita Popov <nikic@php.net> | 2016-05-10 12:13:10 +0200 |
---|---|---|
committer | Nikita Popov <nikic@php.net> | 2016-05-10 12:13:10 +0200 |
commit | a1ed4ab3caf33b59742897b43462d033864bb490 (patch) | |
tree | dd34f7964a55a22b84afe085b24927bd8257b29c /ext/reflection/php_reflection.c | |
parent | 3407931108bc9f626ee367513be288daa08cfc3d (diff) | |
download | php-git-a1ed4ab3caf33b59742897b43462d033864bb490.tar.gz |
Fixed bug #72174
Also fixes a memory leak if ::getValue() is used with __get().
Diffstat (limited to 'ext/reflection/php_reflection.c')
-rw-r--r-- | ext/reflection/php_reflection.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c index 50d0ba0023..4c3f6240f4 100644 --- a/ext/reflection/php_reflection.c +++ b/ext/reflection/php_reflection.c @@ -5383,8 +5383,12 @@ 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_DUP(return_value, member_p); + member_p = zend_read_property(ref->ce, object, prop_name, prop_name_len, 0, &rv); + if (member_p != &rv) { + ZVAL_COPY(return_value, member_p); + } else { + ZVAL_COPY_VALUE(return_value, member_p); + } } } /* }}} */ |