Issue #19543 has been updated by ioquatix (Samuel Williams).
Status changed from Open to Closed
Backport changed from 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN to 2.7:
UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: REQUIRED
Thanks for your PR, it was great. I have merged it with minor extensions to the tests.
https://github.com/ruby/ruby/commit/09295ea796900fb7b05d29e93364090e21598566
----------------------------------------
Bug #19543: Resizing IO::Buffer to zero bytes fails
https://bugs.ruby-lang.org/issues/19543#change-102533
* Author: hanazuki (Kasumi Hanazuki)
* Status: Closed
* Priority: Normal
* ruby -v: ruby 3.3.0dev (2023-03-20T04:02:21Z master 7f696b8859) [x86_64-linux]
* Backport: 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: REQUIRED
----------------------------------------
```
irb(main):001:0> IO::Buffer.new(1).resize(0)
/home/kasumi/.local/src/github.com/ruby/ruby/-e:1: warning: IO::Buffer is experimental and
both the Ruby and C interface may change in the future!
/home/kasumi/.local/src/github.com/ruby/ruby/-e:1: [BUG]
rb_sys_fail(rb_io_buffer_resize:realloc) - errno == 0
ruby 3.3.0dev (2023-03-20T04:02:21Z master 7f696b8859) [x86_64-linux]
# full trace is attached to this ticket
```
`IO::Buffer#resize(0)` will result in calling `realloc(data->base, size)` with size = 0
in
[
rb_io_buffer_resize](https://bugs.ruby-lang.org/projects/ruby-master/reposi….
Zero-sized `realloc` is deprecated in C (and will be UB in C23).
---Files--------------------------------
bug.txt (40 KB)
--
https://bugs.ruby-lang.org/