summaryrefslogtreecommitdiff
path: root/string.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-06-12 11:33:12 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-06-12 11:33:12 +0000
commit85bbacbba2defb1118fff2a43a6ae7295ccebbba (patch)
tree309141bffb7be06f5b00adb721096059dffa1d90 /string.c
parent595782b9244491f120250583429133008f3d3eaf (diff)
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
Diffstat (limited to 'string.c')
-rw-r--r--string.c2
1 files changed, 1 insertions, 1 deletions
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;