Commit 390d77b
committed
Fix memory leak in String#encode when StringValue raises
The following script leaks memory:
10.times do
100_000.times do
"\ufffd".encode(Encoding::US_ASCII, fallback: proc { Object.new })
rescue
end
puts `ps -o rss= -p #{$$}`
end
Before:
450244
887748
1325124
1762756
2200260
2637508
3075012
3512516
3950020
4387524
After:
12236
12364
12748
13004
13388
13516
13772
13772
13772
137721 parent 5384136 commit 390d77b
2 files changed
+37
-2
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3807 | 3807 | | |
3808 | 3808 | | |
3809 | 3809 | | |
| 3810 | + | |
| 3811 | + | |
| 3812 | + | |
| 3813 | + | |
| 3814 | + | |
| 3815 | + | |
| 3816 | + | |
| 3817 | + | |
| 3818 | + | |
| 3819 | + | |
| 3820 | + | |
| 3821 | + | |
| 3822 | + | |
| 3823 | + | |
| 3824 | + | |
| 3825 | + | |
| 3826 | + | |
| 3827 | + | |
| 3828 | + | |
| 3829 | + | |
| 3830 | + | |
| 3831 | + | |
| 3832 | + | |
| 3833 | + | |
| 3834 | + | |
| 3835 | + | |
| 3836 | + | |
| 3837 | + | |
| 3838 | + | |
| 3839 | + | |
3810 | 3840 | | |
3811 | 3841 | | |
3812 | 3842 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2360 | 2360 | | |
2361 | 2361 | | |
2362 | 2362 | | |
2363 | | - | |
| 2363 | + | |
| 2364 | + | |
| 2365 | + | |
| 2366 | + | |
| 2367 | + | |
| 2368 | + | |
| 2369 | + | |
2364 | 2370 | | |
2365 | 2371 | | |
2366 | 2372 | | |
| |||
2428 | 2434 | | |
2429 | 2435 | | |
2430 | 2436 | | |
2431 | | - | |
2432 | 2437 | | |
2433 | 2438 | | |
2434 | 2439 | | |
| |||
0 commit comments