diff --git a/ext/curl/interface.c b/ext/curl/interface.c index 7fc1c77e9a9a..4e4da5503bbb 100644 --- a/ext/curl/interface.c +++ b/ext/curl/interface.c @@ -770,6 +770,7 @@ static int curl_prereqfunction(void *clientp, char *conn_primary_ip, char *conn_ zend_value_error("The CURLOPT_PREREQFUNCTION callback must return either CURL_PREREQFUNC_OK or CURL_PREREQFUNC_ABORT"); } } else { + zval_ptr_dtor(&retval); zend_type_error("The CURLOPT_PREREQFUNCTION callback must return either CURL_PREREQFUNC_OK or CURL_PREREQFUNC_ABORT"); } } diff --git a/ext/curl/tests/curl_setopt_CURLOPT_PREREQFUNCTION.phpt b/ext/curl/tests/curl_setopt_CURLOPT_PREREQFUNCTION.phpt index d11e29f078c0..75d9324f15db 100644 --- a/ext/curl/tests/curl_setopt_CURLOPT_PREREQFUNCTION.phpt +++ b/ext/curl/tests/curl_setopt_CURLOPT_PREREQFUNCTION.phpt @@ -77,7 +77,7 @@ try { echo "\nTesting with invalid type\n"; curl_setopt($ch, CURLOPT_PREREQFUNCTION, function() use ($port) { - return 'this should be an integer'; + return ['this should be an integer' => random_bytes(64)]; }); try { curl_exec($ch);