blob: 952352c8539b642cc18b6dbdff7acf7060e68a75 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
--TEST--
Verify yield from on generators being properly cycle collected
--INI--
zend.enable_gc = 1
--FILE--
<?php
function root() {
global $gens; // create cyclic reference to root
try {
yield 1;
} finally {
var_dump($gens);
}
}
function gen($x) {
global $gens;
yield from $gens[] = $x ? gen(--$x) : root();
}
$gen = $gens[] = gen(2);
var_dump($gen->current());
unset($gen, $gens);
print "collect\n";
gc_collect_cycles();
print "end\n";
?>
--EXPECT--
int(1)
collect
array(4) {
[0]=>
object(Generator)#1 (0) {
}
[1]=>
object(Generator)#2 (0) {
}
[2]=>
object(Generator)#3 (0) {
}
[3]=>
object(Generator)#4 (0) {
}
}
end
|