зеркало из https://github.com/github/ruby.git
[ruby/stringio] Define `StringIO::MAX_LENGTH`
https://github.com/ruby/stringio/commit/0205bd1c86
This commit is contained in:
Родитель
2fc551e34e
Коммит
3f8ef7ff7c
|
@ -1861,6 +1861,10 @@ Init_stringio(void)
|
||||||
|
|
||||||
rb_include_module(StringIO, rb_mEnumerable);
|
rb_include_module(StringIO, rb_mEnumerable);
|
||||||
rb_define_alloc_func(StringIO, strio_s_allocate);
|
rb_define_alloc_func(StringIO, strio_s_allocate);
|
||||||
|
|
||||||
|
/* Maximum length that a StringIO instance can hold */
|
||||||
|
rb_define_const(StringIO, "MAX_LENGTH", LONG2NUM(LONG_MAX));
|
||||||
|
|
||||||
rb_define_singleton_method(StringIO, "new", strio_s_new, -1);
|
rb_define_singleton_method(StringIO, "new", strio_s_new, -1);
|
||||||
rb_define_singleton_method(StringIO, "open", strio_s_open, -1);
|
rb_define_singleton_method(StringIO, "open", strio_s_open, -1);
|
||||||
rb_define_method(StringIO, "initialize", strio_initialize, -1);
|
rb_define_method(StringIO, "initialize", strio_initialize, -1);
|
||||||
|
|
|
@ -237,9 +237,8 @@ class TestStringIO < Test::Unit::TestCase
|
||||||
|
|
||||||
def test_write_integer_overflow
|
def test_write_integer_overflow
|
||||||
f = StringIO.new
|
f = StringIO.new
|
||||||
|
f.pos = StringIO::MAX_LENGTH
|
||||||
assert_raise(ArgumentError) {
|
assert_raise(ArgumentError) {
|
||||||
# JRuby errors when setting pos to an out-of-range value
|
|
||||||
f.pos = RbConfig::LIMITS["LONG_MAX"]
|
|
||||||
f.write("pos + len overflows")
|
f.write("pos + len overflows")
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
@ -900,8 +899,9 @@ class TestStringIO < Test::Unit::TestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_overflow
|
def test_overflow
|
||||||
return if RbConfig::SIZEOF["void*"] > RbConfig::SIZEOF["long"]
|
intptr_max = RbConfig::LIMITS["INTPTR_MAX"]
|
||||||
limit = RbConfig::LIMITS["INTPTR_MAX"] - 0x10
|
return if intptr_max > StringIO::MAX_LENGTH
|
||||||
|
limit = intptr_max - 0x10
|
||||||
assert_separately(%w[-rstringio], "#{<<-"begin;"}\n#{<<-"end;"}")
|
assert_separately(%w[-rstringio], "#{<<-"begin;"}\n#{<<-"end;"}")
|
||||||
begin;
|
begin;
|
||||||
limit = #{limit}
|
limit = #{limit}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче