string.c: fix capacity
* string.c (str_buf_cat): should round up the capacity by 4KiB, but not number of rooms. [ruby-core:61886] [Bug #9709] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45534 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
0192e15b4c
commit
68537a4219
@ -1,3 +1,8 @@
|
|||||||
|
Wed Apr 9 12:44:54 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
|
* string.c (str_buf_cat): should round up the capacity by 4KiB,
|
||||||
|
but not number of rooms. [ruby-core:61886] [Bug #9709]
|
||||||
|
|
||||||
Tue Apr 8 22:55:32 2014 Akinori MUSHA <knu@iDaemons.org>
|
Tue Apr 8 22:55:32 2014 Akinori MUSHA <knu@iDaemons.org>
|
||||||
|
|
||||||
* lib/mkmf.rb (MakeMakefile#dir_config): Improve documentation.
|
* lib/mkmf.rb (MakeMakefile#dir_config): Improve documentation.
|
||||||
|
2
string.c
2
string.c
@ -2029,7 +2029,7 @@ str_buf_cat(VALUE str, const char *ptr, long len)
|
|||||||
if (capa <= total) {
|
if (capa <= total) {
|
||||||
while (total > capa) {
|
while (total > capa) {
|
||||||
if (capa + termlen >= LONG_MAX / 2) {
|
if (capa + termlen >= LONG_MAX / 2) {
|
||||||
capa = (total + 4095) / 4096;
|
capa = (total + 4095) / 4096 * 4096;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
capa = (capa + termlen) * 2;
|
capa = (capa + termlen) * 2;
|
||||||
|
@ -2252,6 +2252,17 @@ class TestString < Test::Unit::TestCase
|
|||||||
assert_equal(:foo, s.send(:=~, /abc/))
|
assert_equal(:foo, s.send(:=~, /abc/))
|
||||||
assert_equal(:foo, s =~ /abc/, "should not use optimized instruction")
|
assert_equal(:foo, s =~ /abc/, "should not use optimized instruction")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_LSHIFT_neary_long_max
|
||||||
|
return unless @cls == String
|
||||||
|
assert_ruby_status([], <<-'end;', '[ruby-core:61886] [Bug #9709]')
|
||||||
|
begin
|
||||||
|
a = "a" * 0x4000_0000
|
||||||
|
a << "a" * 0x1_0000
|
||||||
|
rescue NoMemoryError
|
||||||
|
end
|
||||||
|
end;
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
class TestString2 < TestString
|
class TestString2 < TestString
|
||||||
|
Loading…
x
Reference in New Issue
Block a user