summaryrefslogtreecommitdiff
path: root/test/ruby/test_array.rb
diff options
context:
space:
mode:
authornagachika <nagachika@ruby-lang.org>2023-07-16 16:42:12 +0900
committernagachika <nagachika@ruby-lang.org>2023-07-16 16:42:12 +0900
commitc13757ed9ae02a2d03aea91bb852397aa920f3fd (patch)
tree7020db60e186213719a39e968d29be9479518e7c /test/ruby/test_array.rb
parent141402d11c09fa641eebd8f4841f81e7bbf3518c (diff)
merge revision(s) 09295ea796900fb7b05d29e93364090e21598566: [Backport #19543]
IO::Buffer#resize: Free internal buffer if new size is zero (#7569) `#resize(0)` on an IO::Buffer with internal buffer allocated will result in calling `realloc(data->base, 0)`. The behavior of `realloc` with size = 0 is implementation-defined (glibc frees the object and returns NULL, while BSDs return an inaccessible object). And thus such usage is deprecated in standard C (upcoming C23 will make it UB). To avoid this problem, just `free`s the memory when the new size is zero. --- io_buffer.c | 5 +++++ test/ruby/test_io_buffer.rb | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+)
Diffstat (limited to 'test/ruby/test_array.rb')
0 files changed, 0 insertions, 0 deletions