Merge branch 'PHP-8.1' into PHP-8.2

* PHP-8.1:
  Fix assertion failure when var_dump'ing void FFI result (#10568)
This commit is contained in:
Dmitry Stogov 2023-02-13 22:38:43 +03:00
commit cec528d06b
2 changed files with 27 additions and 0 deletions

View File

@ -2028,6 +2028,8 @@ static HashTable *zend_ffi_cdata_get_debug_info(zend_object *obj, int *is_temp)
} }
switch (type->kind) { switch (type->kind) {
case ZEND_FFI_TYPE_VOID:
return NULL;
case ZEND_FFI_TYPE_BOOL: case ZEND_FFI_TYPE_BOOL:
case ZEND_FFI_TYPE_CHAR: case ZEND_FFI_TYPE_CHAR:
case ZEND_FFI_TYPE_ENUM: case ZEND_FFI_TYPE_ENUM:

View File

@ -0,0 +1,25 @@
--TEST--
GH-10568 (Assertion failure when var_dump'ing void FFI result)
--EXTENSIONS--
ffi
--SKIPIF--
<?php
try {
$libc = FFI::cdef("void strlen(const char *s);", "libc.so.6");
} catch (Throwable $_) {
die('skip libc.so.6 not available');
}
?>
--INI--
ffi.enable=1
--FILE--
<?php
// Yes, I know that strlen does not return void, but I need a simple & portable test case.
$libc = FFI::cdef("void strlen(const char *s);", "libc.so.6");
var_dump($libc->strlen("abc"));
?>
DONE
--EXPECT--
object(FFI\CData:void)#2 (0) {
}
DONE