Skip to content

Commit 84a638a

Browse files
committed
Fix memory leak
Fixes oss-fuzz #44685
1 parent 8f5480e commit 84a638a

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
--TEST--
2+
Memory leak when resume an already running generator
3+
--FILE--
4+
<?php
5+
function gen() {
6+
$g = yield;
7+
$g->send($g);
8+
}
9+
$gen = gen();
10+
try {
11+
$gen->send($gen);
12+
} catch (Throwable $e) {
13+
echo $e->getMessage() . "\n";
14+
}
15+
?>
16+
--EXPECT--
17+
Cannot resume an already running generator

Zend/zend_generators.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -924,6 +924,7 @@ ZEND_METHOD(Generator, send)
924924
root = zend_generator_get_current(generator);
925925
/* Put sent value in the target VAR slot, if it is used */
926926
if (root->send_target) {
927+
zval_ptr_dtor(root->send_target);
927928
ZVAL_COPY(root->send_target, value);
928929
}
929930

0 commit comments

Comments
 (0)