diff options
author | Peter Zhu <[email protected]> | 2023-06-29 09:21:11 -0400 |
---|---|---|
committer | Peter Zhu <[email protected]> | 2023-06-29 11:16:50 -0400 |
commit | f0d08d11dcd404f3146c0d71d6ff743bbc6e7193 (patch) | |
tree | 82e6bb0fff741e124915c7a2f6aabe54a484ee71 /parser_st.c | |
parent | df2b3a29987e9353596af76ed77f35d7366d654e (diff) |
Fix memory leak when copying ST tables
st_copy allocates a st_table, which is not needed for hashes since it is
allocated by VWA and embedded, so this causes a memory leak.
The following script demonstrates the issue:
```ruby
20.times do
100_000.times do
{a: 1, b: 2, c: 3, d: 4, e: 5, f: 6, g: 7, h: 8, i: 9}
end
puts `ps -o rss= -p #{$$}`
end
```
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/8000
Diffstat (limited to 'parser_st.c')
-rw-r--r-- | parser_st.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/parser_st.c b/parser_st.c index b2df6cbad2..5d3148bc0d 100644 --- a/parser_st.c +++ b/parser_st.c @@ -109,6 +109,8 @@ nonempty_memcpy(void *dest, const void *src, size_t n) #define st_add_direct rb_parser_st_add_direct #undef st_insert2 #define st_insert2 rb_parser_st_insert2 +#undef st_replace +#define st_replace rb_parser_st_replace #undef st_copy #define st_copy rb_parser_st_copy #undef st_delete_safe |