Clarify that FFI::cdef() does not return NULL

This commit is contained in:
Nikita Popov 2020-04-28 14:46:04 +02:00
parent 2baaec108a
commit 7d1c806491
3 changed files with 5 additions and 3 deletions

View file

@ -2869,7 +2869,7 @@ ZEND_METHOD(FFI, cdef) /* {{{ */
efree(FFI_G(tags)); efree(FFI_G(tags));
FFI_G(tags) = NULL; FFI_G(tags) = NULL;
} }
return; RETURN_THROWS();
} }
if (FFI_G(symbols)) { if (FFI_G(symbols)) {
@ -2881,6 +2881,7 @@ ZEND_METHOD(FFI, cdef) /* {{{ */
addr = DL_FETCH_SYMBOL(handle, ZSTR_VAL(name)); addr = DL_FETCH_SYMBOL(handle, ZSTR_VAL(name));
if (!addr) { if (!addr) {
zend_throw_error(zend_ffi_exception_ce, "Failed resolving C variable '%s'", ZSTR_VAL(name)); zend_throw_error(zend_ffi_exception_ce, "Failed resolving C variable '%s'", ZSTR_VAL(name));
RETURN_THROWS();
} }
sym->addr = addr; sym->addr = addr;
} else if (sym->kind == ZEND_FFI_SYM_FUNC) { } else if (sym->kind == ZEND_FFI_SYM_FUNC) {
@ -2890,6 +2891,7 @@ ZEND_METHOD(FFI, cdef) /* {{{ */
zend_string_release(mangled_name); zend_string_release(mangled_name);
if (!addr) { if (!addr) {
zend_throw_error(zend_ffi_exception_ce, "Failed resolving C function '%s'", ZSTR_VAL(name)); zend_throw_error(zend_ffi_exception_ce, "Failed resolving C function '%s'", ZSTR_VAL(name));
RETURN_THROWS();
} }
sym->addr = addr; sym->addr = addr;
} }

View file

@ -4,7 +4,7 @@
final class FFI final class FFI
{ {
public static function cdef(string $code = UNKNOWN, string $lib = UNKNOWN): ?FFI {} public static function cdef(string $code = UNKNOWN, string $lib = UNKNOWN): FFI {}
public static function load(string $filename): ?FFI {} public static function load(string $filename): ?FFI {}

View file

@ -1,6 +1,6 @@
/* This is a generated file, edit the .stub.php file instead. */ /* This is a generated file, edit the .stub.php file instead. */
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_class_FFI_cdef, 0, 0, FFI, 1) ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_class_FFI_cdef, 0, 0, FFI, 0)
ZEND_ARG_TYPE_INFO(0, code, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, code, IS_STRING, 0)
ZEND_ARG_TYPE_INFO(0, lib, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, lib, IS_STRING, 0)
ZEND_END_ARG_INFO() ZEND_END_ARG_INFO()