Add a frozenness check to Enumerator::Generator#initialize.

* enumerator.c (generator_init): Ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42234 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
knu 2013-07-29 12:06:42 +00:00
Родитель 8cb0de91c4
Коммит 075752a836
2 изменённых файлов: 6 добавлений и 0 удалений

Просмотреть файл

@ -1178,6 +1178,7 @@ generator_init(VALUE obj, VALUE proc)
{
struct generator *ptr;
rb_check_frozen(obj);
TypedData_Get_Struct(obj, struct generator, &generator_data_type, ptr);
if (!ptr) {

Просмотреть файл

@ -419,6 +419,11 @@ class TestEnumerator < Test::Unit::TestCase
a = []
assert_equal(:foo, g2.each {|x| a << x })
assert_equal([1, 2, 3], a)
g.freeze
assert_raise(RuntimeError) {
g.__send__ :initialize, proc { |y| y << 4 << 5 }
}
end
def test_generator_args