summaryrefslogtreecommitdiff
path: root/object.c
diff options
context:
space:
mode:
Diffstat (limited to 'object.c')
-rw-r--r--object.c24
1 files changed, 9 insertions, 15 deletions
diff --git a/object.c b/object.c
index c6d9b58d39..5263618697 100644
--- a/object.c
+++ b/object.c
@@ -1766,20 +1766,7 @@ rb_mod_cmp(VALUE mod, VALUE arg)
return INT2FIX(1);
}
-static VALUE
-rb_module_s_alloc(VALUE klass)
-{
- VALUE mod = rb_module_new();
-
- RBASIC_SET_CLASS(mod, klass);
- return mod;
-}
-
-static VALUE
-rb_class_s_alloc(VALUE klass)
-{
- return rb_class_boot(0);
-}
+static VALUE rb_mod_initialize_exec(VALUE module);
/*
* call-seq:
@@ -1810,6 +1797,13 @@ rb_class_s_alloc(VALUE klass)
static VALUE
rb_mod_initialize(VALUE module)
{
+ rb_module_check_initialiable(module);
+ return rb_mod_initialize_exec(module);
+}
+
+static VALUE
+rb_mod_initialize_exec(VALUE module)
+{
if (rb_block_given_p()) {
rb_mod_module_exec(1, &module, module);
}
@@ -1879,7 +1873,7 @@ rb_class_initialize(int argc, VALUE *argv, VALUE klass)
RCLASS_SET_SUPER(klass, super);
rb_make_metaclass(klass, RBASIC(super)->klass);
rb_class_inherited(super, klass);
- rb_mod_initialize(klass);
+ rb_mod_initialize_exec(klass);
return klass;
}