diff options
Diffstat (limited to 'Zend/zend_builtin_functions.c')
| -rw-r--r-- | Zend/zend_builtin_functions.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index 8989e93fa6..8ea758adcc 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -1151,6 +1151,12 @@ ZEND_FUNCTION(get_object_vars) if (!zobj->ce->default_properties_count && properties == zobj->properties) { /* fast copy */ + if (EXPECTED(zobj->handlers == &std_object_handlers)) { + if (EXPECTED(!(GC_FLAGS(properties) & IS_ARRAY_IMMUTABLE))) { + GC_REFCOUNT(properties)++; + } + RETURN_ARR(properties); + } RETURN_ARR(zend_array_dup(properties)); } else { array_init_size(return_value, zend_hash_num_elements(properties)); |
