}
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);
+ }
}
}
/* }}} */