aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--string.c2
2 files changed, 6 insertions, 1 deletions
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 <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)
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;