diff --git a/ext/curl/interface.c b/ext/curl/interface.c index 59362adddb7..7b6107d4814 100644 --- a/ext/curl/interface.c +++ b/ext/curl/interface.c @@ -1520,6 +1520,10 @@ static bool php_curl_set_callable_handler(zend_fcall_info_cache *const handler_f zend_fcc_dtor(handler_fcc); } + if (Z_TYPE_P(callable) == IS_NULL) { + return true; + } + char *error = NULL; if (UNEXPECTED(!zend_is_callable_ex(callable, /* object */ NULL, /* check_flags */ 0, /* callable_name */ NULL, handler_fcc, /* error */ &error))) { if (!EG(exception)) { diff --git a/ext/curl/tests/callable_nullable_option.phpt b/ext/curl/tests/callable_nullable_option.phpt new file mode 100644 index 00000000000..b43e9603480 --- /dev/null +++ b/ext/curl/tests/callable_nullable_option.phpt @@ -0,0 +1,16 @@ +--TEST-- +Callable options are nullable +--EXTENSIONS-- +curl +--FILE-- + null, +]); + +?> +===DONE=== +--EXPECT-- +===DONE===