1--TEST-- 2Bug #79096 (FFI Struct Segfault) 3--SKIPIF-- 4<?php 5if (!extension_loaded('ffi')) die('skip ffi extension not available'); 6if (!extension_loaded('zend-test')) die('skip zend-test extension not available'); 7?> 8--FILE-- 9<?php 10require_once('utils.inc'); 11$header = <<<HEADER 12struct bug79096 { 13 uint64_t a; 14 uint64_t b; 15}; 16 17struct bug79096 bug79096(void); 18HEADER; 19 20if (PHP_OS_FAMILY !== 'Windows') { 21 $ffi = FFI::cdef($header); 22} else { 23 try { 24 $ffi = FFI::cdef($header, 'php_zend_test.dll'); 25 } catch (FFI\Exception $ex) { 26 $ffi = FFI::cdef($header, ffi_get_php_dll_name()); 27 } 28} 29 30$struct = $ffi->bug79096(); 31var_dump($struct); 32?> 33--EXPECTF-- 34object(FFI\CData:struct bug79096)#%d (2) { 35 ["a"]=> 36 int(1) 37 ["b"]=> 38 int(1) 39} 40