Skip to content

Commit f6ce554

Browse files
committed
Simplify and fix generator tree management
1 parent ccf7c51 commit f6ce554

File tree

4 files changed

+184
-251
lines changed

4 files changed

+184
-251
lines changed

Zend/tests/generators/bug80240.phpt

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
--TEST--
2+
Bug #80240: Use after free multi yield from
3+
--FILE--
4+
<?php
5+
6+
function gen() {
7+
yield 0;
8+
yield from gen();
9+
}
10+
11+
function bar($gen) {
12+
yield from $gen;
13+
}
14+
15+
$gen = gen();
16+
$a = bar($gen);
17+
$b = bar($gen);
18+
$a->rewind();
19+
$b->rewind();
20+
$a->next();
21+
unset($gen);
22+
unset($a);
23+
unset($b);
24+
25+
?>
26+
===DONE===
27+
--EXPECT--
28+
===DONE===
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
--TEST--
2+
Leaf link may need to be invalidated depending on dtor order
3+
--FILE--
4+
<?php
5+
6+
function gen2() {
7+
yield 1;
8+
}
9+
function gen() {
10+
yield from gen2();
11+
}
12+
function bar($g) {
13+
yield from $g;
14+
}
15+
16+
$gen = gen();
17+
$bar = bar($gen);
18+
var_dump($bar->current());
19+
$copy = $bar;
20+
unset($gen);
21+
22+
?>
23+
--EXPECT--
24+
int(1)

0 commit comments

Comments
 (0)