diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2018-06-30 20:10:57 +0200 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2018-06-30 20:10:57 +0200 |
commit | 9b0df97a42749464069859c5ca77c0241a8b05ca (patch) | |
tree | ff32c018d8a9bcb459ade5232b60c71c2106236a | |
parent | 2eb6a541a9d4141dcad427799cf8acbeba3f2777 (diff) | |
download | php-git-9b0df97a42749464069859c5ca77c0241a8b05ca.tar.gz |
Fix handling of void return type on internal functions
-rw-r--r-- | Zend/zend_execute.c | 9 |
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))) { |