summaryrefslogtreecommitdiff
path: root/ext/standard/array.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/standard/array.c')
-rw-r--r--ext/standard/array.c8
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(&copyval, *zkeyval, 1, 0);
- convert_to_string(&copyval);
- add_assoc_zval(return_value, Z_STRVAL(copyval), *zcolval);
- zval_dtor(&copyval);
+ 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);
}