Skip to content

Commit 452f7b0

Browse files
committed
Fix use-after-free with yield from in yield_from_multi_tree_single_nodes.phpt
Prevent release of generator children during destruction
1 parent f51bbcc commit 452f7b0

File tree

1 file changed

+2
-0
lines changed

1 file changed

+2
-0
lines changed

Zend/zend_generators.c

+2
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,9 @@ static void zend_generator_dtor_storage(zend_object *object) /* {{{ */
232232
child = (zend_generator *) Z_PTR_P(zend_hash_get_current_data(generator->node.child.ht));
233233
}
234234
GC_ADD_FLAGS(&child->std, IS_OBJ_DESTRUCTOR_CALLED);
235+
GC_ADDREF(&child->std); /* must not be released during destructor */
235236
zend_generator_dtor_storage(&child->std);
237+
OBJ_RELEASE(&child->std);
236238
}
237239
}
238240
if (EXPECTED(generator->node.children == 0)) {

0 commit comments

Comments
 (0)