summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2018-06-30 20:10:57 +0200
committerNikita Popov <nikita.ppv@gmail.com>2018-06-30 20:10:57 +0200
commit9b0df97a42749464069859c5ca77c0241a8b05ca (patch)
treeff32c018d8a9bcb459ade5232b60c71c2106236a
parent2eb6a541a9d4141dcad427799cf8acbeba3f2777 (diff)
downloadphp-git-9b0df97a42749464069859c5ca77c0241a8b05ca.tar.gz
Fix handling of void return type on internal functions
-rw-r--r--Zend/zend_execute.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index f88fac6c88..60953ee354 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -1042,9 +1042,12 @@ static int zend_verify_internal_return_type(zend_function *zf, zval *ret)
zend_internal_arg_info *ret_info = zf->internal_function.arg_info - 1;
zend_class_entry *ce = NULL;
- if (UNEXPECTED(ret_info->type_hint == IS_VOID && Z_TYPE_P(ret) != IS_NULL)) {
- zend_verify_void_return_error(zf, zend_zval_type_name(ret), "");
- return 0;
+ if (ret_info->type_hint == IS_VOID) {
+ if (UNEXPECTED(Z_TYPE_P(ret) != IS_NULL)) {
+ zend_verify_void_return_error(zf, zend_zval_type_name(ret), "");
+ return 0;
+ }
+ return 1;
}
if (UNEXPECTED(!zend_check_internal_type(zf, ret_info, ret, &ce, 1))) {