diff --git a/ChangeLog b/ChangeLog index 48ba5a0851..4756fd48c0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Thu Jun 12 20:32:28 2014 Nobuyoshi Nakada + + * string.c (rb_str_resize): should consider the capacity instead + of the old length, as pointed out by nagachika. + Thu Jun 12 18:31:01 2014 SHIBATA Hiroshi * lib/net/http/responses.rb: added Net::HTTPPermanentRedirect(308) diff --git a/string.c b/string.c index 8a349cb6c0..faf12f23e8 100644 --- a/string.c +++ b/string.c @@ -1996,7 +1996,7 @@ rb_str_resize(VALUE str, long len) if (len == slen) return str; str_make_independent_expand(str, len - slen); } - else if (slen < len || slen - len > 1024) { + else if (slen < len || (RSTRING(str)->as.heap.aux.capa - len) > (len < 1024 ? len : 1024)) { REALLOC_N(RSTRING(str)->as.heap.ptr, char, len + termlen); } else if (len == slen) return str;