diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2012-10-09 23:45:51 -0700 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2012-10-09 23:45:51 -0700 |
| commit | 4dcd7cdacd6e19a1c5120fa8366a4887e79da5b6 (patch) | |
| tree | ed077661499d65848891b3f6581933837695472b | |
| parent | cf2bd3469a08ac20cffa62fe00c54fd69844fcfa (diff) | |
| parent | 8949e3c7fb964e58d1666e9dba20c575e553b479 (diff) | |
| download | mruby-4dcd7cdacd6e19a1c5120fa8366a4887e79da5b6.tar.gz mruby-4dcd7cdacd6e19a1c5120fa8366a4887e79da5b6.zip | |
Merge pull request #485 from beoran/bdm_extend_main_crashes_fix
Bugfix for crash if main was extended with a module.
| -rw-r--r-- | src/class.c | 2 | ||||
| -rw-r--r-- | test/t/kernel.rb | 10 |
2 files changed, 12 insertions, 0 deletions
diff --git a/src/class.c b/src/class.c index fad476929..a73f42566 100644 --- a/src/class.c +++ b/src/class.c @@ -786,6 +786,8 @@ mrb_singleton_class(mrb_state *mrb, mrb_value v) return mrb_obj_value(mrb->false_class); case MRB_TT_TRUE: return mrb_obj_value(mrb->true_class); + case MRB_TT_MAIN: + return mrb_obj_value(mrb->object_class); case MRB_TT_SYMBOL: case MRB_TT_FIXNUM: case MRB_TT_FLOAT: diff --git a/test/t/kernel.rb b/test/t/kernel.rb index fb0aee310..5caa3d7ac 100644 --- a/test/t/kernel.rb +++ b/test/t/kernel.rb @@ -204,6 +204,16 @@ assert('Kernel#extend', '15.3.1.3.13') do a.respond_to?(:test_method) == true && b.respond_to?(:test_method) == false end +assert('Kernel#extend works on toplevel', '15.3.1.3.13') do + module Test4ExtendModule + def test_method; end + end + # This would crash... + extend(Test4ExtendModule) + + respond_to?(:test_method) == true +end + assert('Kernel#global_variables', '15.3.1.3.14') do global_variables.class == Array end |
