Merge branch 'PHP-8.1' into PHP-8.2

* PHP-8.1:
  [ci skip] NEWS
  [ci skip] NEWS
  Fix compilation warning
  Fix crash when memory limit is exceeded during generator initialization
This commit is contained in:
Arnaud Le Blanc 2022-10-22 10:44:55 +02:00
commit cfd5fb98e4
4 changed files with 18 additions and 0 deletions

View file

@ -0,0 +1,14 @@
--TEST--
Bug GH-9801 (Crash when memory limit is exceeded during generator initialization)
--INI--
memory_limit=16m
--FILE--
<?php
function a() {
yield from a();
}
foreach(a() as $v);
--EXPECTF--
Fatal error: Allowed memory size of %d bytes exhausted %s

View file

@ -4435,6 +4435,7 @@ ZEND_VM_HANDLER(139, ZEND_GENERATOR_CREATE, ANY, ANY)
zend_execute_data *gen_execute_data;
uint32_t num_args, used_stack, call_info;
SAVE_OPLINE();
object_init_ex(return_value, zend_ce_generator);
/*

View file

@ -2114,6 +2114,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GENERATOR_CREATE_SPEC_HANDLER(
zend_execute_data *gen_execute_data;
uint32_t num_args, used_stack, call_info;
SAVE_OPLINE();
object_init_ex(return_value, zend_ce_generator);
/*

View file

@ -214,11 +214,13 @@ PHPAPI void _php_emit_fd_setsize_warning(int max_fd);
static inline bool _php_check_fd_setsize(php_socket_t *max_fd, int setsize)
{
#ifdef PHP_WIN32
(void)(max_fd); // Unused
if (setsize + 1 >= FD_SETSIZE) {
_php_emit_fd_setsize_warning(setsize);
return false;
}
#else
(void)(setsize); // Unused
if (*max_fd >= FD_SETSIZE) {
_php_emit_fd_setsize_warning(*max_fd);
*max_fd = FD_SETSIZE - 1;