From 139e9824adfa52c68ac45a0d8886f50ae50c0164 Mon Sep 17 00:00:00 2001 From: David Soria Parra Date: Wed, 15 May 2013 14:27:59 +0200 Subject: [PATCH] Fix array_colum segfault Separate zval to avoid gc from freeing --- ext/standard/array.c | 8 +++----- 1 file 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); } -- 2.40.0