summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2012-10-09 23:45:51 -0700
committerYukihiro "Matz" Matsumoto <[email protected]>2012-10-09 23:45:51 -0700
commit4dcd7cdacd6e19a1c5120fa8366a4887e79da5b6 (patch)
treeed077661499d65848891b3f6581933837695472b
parentcf2bd3469a08ac20cffa62fe00c54fd69844fcfa (diff)
parent8949e3c7fb964e58d1666e9dba20c575e553b479 (diff)
downloadmruby-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.c2
-rw-r--r--test/t/kernel.rb10
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