summaryrefslogtreecommitdiff
path: root/prism_compile.c
diff options
context:
space:
mode:
authorPeter Zhu <[email protected]>2025-05-28 14:48:02 -0400
committerPeter Zhu <[email protected]>2025-05-29 16:06:49 -0400
commit9f91f3617bab2ee220d298ddb874ef73b10dac23 ()
treece7c20cebf483347d62159937bf6adf929441f8c /prism_compile.c
parent6a62a46c3cd8a0fe3623b5363ff21ead1e755169 (diff)
Fix memory with invalid yield in prism
[Bug #21383] The following script s memory: 10.times do 20_000.times do eval("class C; yield; end") rescue SyntaxError end puts `ps -o rss= -p #{$$}` end Before: 16464 25536 29424 35904 39552 44576 46736 51600 56096 59824 After: 13488 16160 18240 20528 19760 21808 21680 22272 22064 22336
Notes: Merged: https://.com/ruby/ruby/pull/13464
-rw-r--r--prism_compile.c1
1 files changed, 1 insertions, 0 deletions
@@ -1265,6 +1265,7 @@ pm_new_child_iseq(rb_iseq_t *iseq, pm_scope_node_t *node, VALUE name, const rb_i
type, ISEQ_COMPILE_DATA(iseq)->option, &error_state);
if (error_state) {
RUBY_ASSERT(ret_iseq == NULL);
rb_jump_tag(error_state);
}