- Core:
. Fixed bug #76846 (Segfault in shutdown function after memory limit error).
(Nikita)
+ . Fixed bug #76946 (Cyclic reference in generator not detected). (Nikita)
-11 Oct 2018, PHP 7.2.11
+27 Sep 2018, PHP 7.3.0RC2
+
+- CURL:
+ . Fixed bug #76480 (Use curl_multi_wait() so that timeouts are respected).
+ (Pierrick)
- Core:
+ . Fixed bug #76869 (Incorrect bypassing protected method accessibilty check).
+ (Dmitry)
. Fixed bug #76800 (foreach inconsistent if array modified during loop).
(Dmitry)
. Fixed bug #76901 (method_exists on SPL iterator passthrough method corrupts
ZVAL_OBJ(gc_buffer++, Z_OBJ(execute_data->This));
}
if (EX_CALL_INFO() & ZEND_CALL_CLOSURE) {
- ZVAL_OBJ(gc_buffer++, (zend_object *) EX(func)->common.prototype);
+ ZVAL_OBJ(gc_buffer++, ZEND_CLOSURE_OBJECT(EX(func)));
}
+ if (execute_data->opline != op_array->opcodes) {
+ uint32_t i, op_num = execute_data->opline - op_array->opcodes - 1;
+ for (i = 0; i < op_array->last_live_range; i++) {
+ const zend_live_range *range = &op_array->live_range[i];
+ if (range->start > op_num) {
+ break;
+ } else if (op_num < range->end) {
+ uint32_t kind = range->var & ZEND_LIVE_MASK;
+ uint32_t var_num = range->var & ~ZEND_LIVE_MASK;
+ zval *var = EX_VAR(var_num);
+ if (kind == ZEND_LIVE_TMPVAR || kind == ZEND_LIVE_LOOP) {
+ ZVAL_COPY_VALUE(gc_buffer++, var);
+ }
+ }
+ }
+ }
+
if (generator->node.children == 0) {
zend_generator *root = generator->node.ptr.root;
while (root != generator) {