summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/ffi/ffi.c4
-rw-r--r--ext/ffi/ffi.stub.php2
-rw-r--r--ext/ffi/ffi_arginfo.h2
3 files changed, 5 insertions, 3 deletions
diff --git a/ext/ffi/ffi.c b/ext/ffi/ffi.c
index 55c1b7093b..1ca8a9be75 100644
--- a/ext/ffi/ffi.c
+++ b/ext/ffi/ffi.c
@@ -2869,7 +2869,7 @@ ZEND_METHOD(FFI, cdef) /* {{{ */
efree(FFI_G(tags));
FFI_G(tags) = NULL;
}
- return;
+ RETURN_THROWS();
}
if (FFI_G(symbols)) {
@@ -2881,6 +2881,7 @@ ZEND_METHOD(FFI, cdef) /* {{{ */
addr = DL_FETCH_SYMBOL(handle, ZSTR_VAL(name));
if (!addr) {
zend_throw_error(zend_ffi_exception_ce, "Failed resolving C variable '%s'", ZSTR_VAL(name));
+ RETURN_THROWS();
}
sym->addr = addr;
} else if (sym->kind == ZEND_FFI_SYM_FUNC) {
@@ -2890,6 +2891,7 @@ ZEND_METHOD(FFI, cdef) /* {{{ */
zend_string_release(mangled_name);
if (!addr) {
zend_throw_error(zend_ffi_exception_ce, "Failed resolving C function '%s'", ZSTR_VAL(name));
+ RETURN_THROWS();
}
sym->addr = addr;
}
diff --git a/ext/ffi/ffi.stub.php b/ext/ffi/ffi.stub.php
index 4d3100579e..a45235469e 100644
--- a/ext/ffi/ffi.stub.php
+++ b/ext/ffi/ffi.stub.php
@@ -4,7 +4,7 @@
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 {}
diff --git a/ext/ffi/ffi_arginfo.h b/ext/ffi/ffi_arginfo.h
index 960c3e3965..009512fe82 100644
--- a/ext/ffi/ffi_arginfo.h
+++ b/ext/ffi/ffi_arginfo.h
@@ -1,6 +1,6 @@
/* 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, lib, IS_STRING, 0)
ZEND_END_ARG_INFO()