1--TEST-- 2GH-8433 (Assigning function pointers to structs in FFI leaks memory) 3--SKIPIF-- 4<?php 5if (!extension_loaded("ffi")) die("skip ffi extension not available"); 6?> 7--FILE-- 8<?php 9 10$ffi = FFI::cdef("typedef struct { int a; } bar;"); 11$x = $ffi->new("bar(*)(void)"); 12FFI::addr($x)[0] = function() use ($ffi) { 13 $bar = $ffi->new("bar"); 14 $bar->a = 2; 15 return $bar; 16}; 17var_dump($x()); 18 19?> 20--EXPECTF-- 21object(FFI\CData:struct <anonymous>)#%d (1) { 22 ["a"]=> 23 int(2) 24} 25