From 075752a83693aad6d9f8c42783b204df6b8bf332 Mon Sep 17 00:00:00 2001 From: knu Date: Mon, 29 Jul 2013 12:06:42 +0000 Subject: 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 --- enumerator.c | 1 + test/ruby/test_enumerator.rb | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/enumerator.c b/enumerator.c index 54cbdc482b..aa961851bf 100644 --- a/enumerator.c +++ b/enumerator.c @@ -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) { diff --git a/test/ruby/test_enumerator.rb b/test/ruby/test_enumerator.rb index 07f10dd041..e3270f3d6a 100644 --- a/test/ruby/test_enumerator.rb +++ b/test/ruby/test_enumerator.rb @@ -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 -- cgit v1.2.3