?? ??? 2017, PHP 7.1.2
- Core:
+ . Improved GENERATOR_CREATE opcode handler. (Bob, Dmitry)
. Fixed bug #73877 (readlink() returns garbage for UTF-8 paths). (Anatol)
. Fixed bug #73876 (Crash when exporting **= in expansion of assign op).
(Sara)
* is allocated on heap.
*/
num_args = EX_NUM_ARGS();
- used_stack = (ZEND_CALL_FRAME_SLOT + num_args + EX(func)->op_array.last_var + EX(func)->op_array.T - MIN(EX(func)->op_array.num_args, num_args)) * sizeof(zval);
- gen_execute_data = (zend_execute_data*)emalloc(used_stack);
+ if (EXPECTED(num_args <= EX(func)->op_array.last_var)) {
+ used_stack = (ZEND_CALL_FRAME_SLOT + EX(func)->op_array.last_var + EX(func)->op_array.T) * sizeof(zval);
+ gen_execute_data = (zend_execute_data*)emalloc(used_stack);
+ used_stack = (ZEND_CALL_FRAME_SLOT + EX(func)->op_array.last_var) * sizeof(zval);
+ } else {
+ used_stack = (ZEND_CALL_FRAME_SLOT + num_args + EX(func)->op_array.last_var + EX(func)->op_array.T - EX(func)->op_array.num_args) * sizeof(zval);
+ gen_execute_data = (zend_execute_data*)emalloc(used_stack);
+ }
memcpy(gen_execute_data, execute_data, used_stack);
/* Save execution context in generator object. */
* is allocated on heap.
*/
num_args = EX_NUM_ARGS();
- used_stack = (ZEND_CALL_FRAME_SLOT + num_args + EX(func)->op_array.last_var + EX(func)->op_array.T - MIN(EX(func)->op_array.num_args, num_args)) * sizeof(zval);
- gen_execute_data = (zend_execute_data*)emalloc(used_stack);
+ if (EXPECTED(num_args <= EX(func)->op_array.last_var)) {
+ used_stack = (ZEND_CALL_FRAME_SLOT + EX(func)->op_array.last_var + EX(func)->op_array.T) * sizeof(zval);
+ gen_execute_data = (zend_execute_data*)emalloc(used_stack);
+ used_stack = (ZEND_CALL_FRAME_SLOT + EX(func)->op_array.last_var) * sizeof(zval);
+ } else {
+ used_stack = (ZEND_CALL_FRAME_SLOT + num_args + EX(func)->op_array.last_var + EX(func)->op_array.T - EX(func)->op_array.num_args) * sizeof(zval);
+ gen_execute_data = (zend_execute_data*)emalloc(used_stack);
+ }
memcpy(gen_execute_data, execute_data, used_stack);
/* Save execution context in generator object. */