diff options
author | kosaki <kosaki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-07-15 16:06:53 +0000 |
---|---|---|
committer | kosaki <kosaki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-07-15 16:06:53 +0000 |
commit | 6270ce85ed36d2844166facb937c2a9f63fb022f (patch) | |
tree | 5469169d82e80ccca1698acbeca2b95910e8f519 | |
parent | 4b29cccf57c44f112c4ee06f30962060a16ae0aa (diff) |
* time.c (time_dup): used rb_obj_class() instead of CLASS_OF().
The patch is made by Kazuki Tsujimoto. [Bug #5012] [ruby-dev:44071]
* test/ruby/test_time.rb (TestTime#test_getlocal_dont_share_eigenclass):
added a new test for eigenclass of time object.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32554 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | test/ruby/test_time.rb | 14 | ||||
-rw-r--r-- | time.c | 2 |
3 files changed, 23 insertions, 1 deletions
@@ -1,3 +1,11 @@ +Sat Jul 16 00:55:38 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com> + + * time.c (time_dup): used rb_obj_class() instead of CLASS_OF(). + The patch is made by Kazuki Tsujimoto. [Bug #5012] [ruby-dev:44071] + + * test/ruby/test_time.rb (TestTime#test_getlocal_dont_share_eigenclass): + added a new test for eigenclass of time object. + Fri Jul 15 19:11:00 2011 Kenta Murata <mrkn@mrkn.jp> * bignum.c (bigsub_int): add RB_GC_GUARD. This patch is made by diff --git a/test/ruby/test_time.rb b/test/ruby/test_time.rb index 6a00b99443..aea4c2edc0 100644 --- a/test/ruby/test_time.rb +++ b/test/ruby/test_time.rb @@ -697,4 +697,18 @@ class TestTime < Test::Unit::TestCase off += 0.1 } end + + def test_getlocal_dont_share_eigenclass + bug5012 = "[ruby-dev:44071]" + + t0 = Time.now + class <<t0; end + t1 = t0.getlocal + + def t0.m + 0 + end + + assert_raise(NoMethodError, bug5012) { t1.m } + end end @@ -3430,7 +3430,7 @@ time_init_copy(VALUE copy, VALUE time) static VALUE time_dup(VALUE time) { - VALUE dup = time_s_alloc(CLASS_OF(time)); + VALUE dup = time_s_alloc(rb_obj_class(time)); time_init_copy(dup, time); return dup; } |