diff options
| author | Xinchen Hui <laruence@gmail.com> | 2016-01-13 17:38:18 +0800 |
|---|---|---|
| committer | Xinchen Hui <laruence@gmail.com> | 2016-01-13 17:38:18 +0800 |
| commit | 39f09507464bfa398c476a64d8b16b4061a3faec (patch) | |
| tree | 67488efe2aab43326e37660243a06bad6d1a57b6 /Zend/zend_builtin_functions.c | |
| parent | 50be2c89bed61a1928cd1dd0c226fe62769344dd (diff) | |
| download | php-git-39f09507464bfa398c476a64d8b16b4061a3faec.tar.gz | |
Fixed bug #71336 (Wrong is_ref on properties as exposed via get_object_vars())
Diffstat (limited to 'Zend/zend_builtin_functions.c')
| -rw-r--r-- | Zend/zend_builtin_functions.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index ff5fa4fcab..231424f1de 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -1198,8 +1198,12 @@ ZEND_FUNCTION(get_object_vars) ZEND_HASH_FOREACH_STR_KEY_VAL_IND(properties, key, value) { if (key) { if (zend_check_property_access(zobj, key) == SUCCESS) { - /* Not separating references */ - if (Z_REFCOUNTED_P(value)) Z_ADDREF_P(value); + if (Z_ISREF_P(value) && Z_REFCOUNT_P(value) == 1) { + value = Z_REFVAL_P(value); + } + if (Z_REFCOUNTED_P(value)) { + Z_ADDREF_P(value); + } if (ZSTR_VAL(key)[0] == 0) { const char *prop_name, *class_name; size_t prop_len; |
