diff options
| author | David Soria Parra <dsp@php.net> | 2013-05-15 14:27:59 +0200 |
|---|---|---|
| committer | David Soria Parra <dsp@php.net> | 2013-05-15 14:42:39 +0200 |
| commit | 139e9824adfa52c68ac45a0d8886f50ae50c0164 (patch) | |
| tree | fb318145b3f40701bbdc00bf1763a1b6913bdfc3 /ext/standard/array.c | |
| parent | 082ee90b9bc9b6487b36831f34acfc901c671c41 (diff) | |
| download | php-git-139e9824adfa52c68ac45a0d8886f50ae50c0164.tar.gz | |
Fix array_colum segfault
Separate zval to avoid gc from freeing
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); } |
