diff options
| author | Jean byroot Boussier <jean.boussier+github@shopify.com> | 2024-06-20 19:39:20 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-06-20 10:39:20 -0700 |
| commit | d1ffd5ecfa62a049b7c508f30b6912a890de1b32 (patch) | |
| tree | 2c898bf560f82fb415593570cad2d8fe632b08aa /string.c | |
| parent | a3eb5e5c70eaee12964cdd807b8f19950003141f (diff) | |
String.new(capacity:) don't substract termlen (#11027)
[Bug #20585]
This was changed in 36a06efdd9f0604093dccbaf96d4e2cb17874dc8 because
`String.new(1024)` would end up allocating `1025` bytes, but the problem
with this change is that the caller may be trying to right size a String.
So instead, we should just better document the behavior of `capacity:`.
Co-authored-by: Jean Boussier <jean.boussier@gmail.com>
Diffstat (limited to 'string.c')
| -rw-r--r-- | string.c | 7 |
1 files changed, 1 insertions, 6 deletions
@@ -1970,12 +1970,7 @@ rb_str_s_new(int argc, VALUE *argv, VALUE klass) } } - long fake_len = capa - termlen; - if (fake_len < 0) { - fake_len = 0; - } - - VALUE str = str_new0(klass, NULL, fake_len, termlen); + VALUE str = str_new0(klass, NULL, capa, termlen); STR_SET_LEN(str, 0); TERM_FILL(RSTRING_PTR(str), termlen); |
