mirror of
https://github.com/php/php-src.git
synced 2024-09-22 18:37:25 +00:00
d5300873c5
We must not attempt to access arbitrary union members when retrieving debug info, because that may not be valid. Therefore we do no longer dereference pointer types inside of unions, but report their address as string in `%p` format instead.
29 lines
482 B
PHP
29 lines
482 B
PHP
--TEST--
|
|
Bug #79571 (FFI: var_dumping unions may segfault)
|
|
--SKIPIF--
|
|
<?php
|
|
if (!extension_loaded('ffi')) die('skip ffi extension not available');
|
|
?>
|
|
--FILE--
|
|
<?php
|
|
$ffi = FFI::cdef(<<<EOF
|
|
typedef union {
|
|
int num;
|
|
char *str;
|
|
} my_union;
|
|
EOF);
|
|
|
|
$union = $ffi->new('my_union');
|
|
$union->num = 42;
|
|
var_dump($union);
|
|
var_dump($union->num);
|
|
?>
|
|
--EXPECTF--
|
|
object(FFI\CData:union <anonymous>)#%d (2) {
|
|
["num"]=>
|
|
int(42)
|
|
["str"]=>
|
|
string(4) "0x2a"
|
|
}
|
|
int(42)
|