diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-06-12 11:33:12 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-06-12 11:33:12 +0000 |
commit | 85bbacbba2defb1118fff2a43a6ae7295ccebbba (patch) | |
tree | 309141bffb7be06f5b00adb721096059dffa1d90 | |
parent | 595782b9244491f120250583429133008f3d3eaf (diff) | |
download | ruby-85bbacbba2defb1118fff2a43a6ae7295ccebbba.tar.gz |
string.c: consider capacity
* string.c (rb_str_resize): should consider the capacity instead
of the old length, as pointed out by nagachika.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46413 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | string.c | 2 |
2 files changed, 6 insertions, 1 deletions
@@ -1,3 +1,8 @@ +Thu Jun 12 20:32:28 2014 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * 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 <shibata.hiroshi@gmail.com> * lib/net/http/responses.rb: added Net::HTTPPermanentRedirect(308) @@ -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; |