diff options
Diffstat (limited to 'ext/standard/array.c')
| -rw-r--r-- | ext/standard/array.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/ext/standard/array.c b/ext/standard/array.c index cfe9be8552..9bfb0887ac 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -2608,11 +2608,9 @@ PHP_FUNCTION(array_column) } else if (zkeyval && Z_TYPE_PP(zkeyval) == IS_LONG) { add_index_zval(return_value, Z_LVAL_PP(zkeyval), *zcolval); } else if (zkeyval && Z_TYPE_PP(zkeyval) == IS_OBJECT) { - zval copyval; - ZVAL_ZVAL(©val, *zkeyval, 1, 0); - convert_to_string(©val); - add_assoc_zval(return_value, Z_STRVAL(copyval), *zcolval); - zval_dtor(©val); + SEPARATE_ZVAL(zkeyval); + convert_to_string(*zkeyval); + add_assoc_zval(return_value, Z_STRVAL_PP(zkeyval), *zcolval); } else { add_next_index_zval(return_value, *zcolval); } |
