diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2016-11-30 03:52:56 +0900 |
|---|---|---|
| committer | GitHub <[email protected]> | 2016-11-30 03:52:56 +0900 |
| commit | f7c0024b8ed4b48e8e6f58df8a9865dcc424a5b0 (patch) | |
| tree | 7fea4f0a2e1ab85d1f06f5802810f378ce735c4d | |
| parent | 5771c9778e917803adeb6e3f6ab7b0680d10aaa1 (diff) | |
| parent | 73bb30c2f4dba7c8da091ec5c5308d6dacf5f52f (diff) | |
| download | mruby-f7c0024b8ed4b48e8e6f58df8a9865dcc424a5b0.tar.gz mruby-f7c0024b8ed4b48e8e6f58df8a9865dcc424a5b0.zip | |
Merge pull request #3278 from bouk/dup-class
Copy over INSTANCE_TT when duping class
| -rw-r--r-- | src/kernel.c | 1 | ||||
| -rw-r--r-- | test/t/kernel.rb | 8 |
2 files changed, 9 insertions, 0 deletions
diff --git a/src/kernel.c b/src/kernel.c index 74254e636..c63e05596 100644 --- a/src/kernel.c +++ b/src/kernel.c @@ -285,6 +285,7 @@ copy_class(mrb_state *mrb, mrb_value dst, mrb_value src) } dc->mt = kh_copy(mt, mrb, sc->mt); dc->super = sc->super; + MRB_SET_INSTANCE_TT(dc, MRB_INSTANCE_TT(sc)); } static void diff --git a/test/t/kernel.rb b/test/t/kernel.rb index 927166283..d240e59dc 100644 --- a/test/t/kernel.rb +++ b/test/t/kernel.rb @@ -221,6 +221,14 @@ assert('Kernel#dup', '15.3.1.3.9') do assert_false c.respond_to?(:test) end +assert('Kernel#dup class') do + assert_nothing_raised do + Array.dup.new(200) + Range.dup.new(2, 3) + String.dup.new("a"*50) + end +end + # Kernel#eval is provided by mruby-eval mrbgem '15.3.1.3.12' assert('Kernel#extend', '15.3.1.3.13') do |
