diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2019-08-17 09:02:47 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2019-08-17 09:02:47 +0900 |
| commit | 0286a7f70954850d767d7708ee6ed8dc1d6de090 (patch) | |
| tree | be0f1899873b68f9ea9a6af1301b4c8588d59988 | |
| parent | 99715a2e623e6baac5a16f2112282816a4d4c6a1 (diff) | |
| download | mruby-0286a7f70954850d767d7708ee6ed8dc1d6de090.tar.gz mruby-0286a7f70954850d767d7708ee6ed8dc1d6de090.zip | |
Avoid `mrb_funcall` from `Class#new` when no overloading.
| -rw-r--r-- | src/class.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/class.c b/src/class.c index e4fda18fc..1aa1bf0e5 100644 --- a/src/class.c +++ b/src/class.c @@ -1537,7 +1537,10 @@ mrb_class_new_class(mrb_state *mrb, mrb_value cv) } new_class = mrb_obj_value(mrb_class_new(mrb, mrb_class_ptr(super))); mid = mrb_intern_lit(mrb, "initialize"); - if (!mrb_func_basic_p(mrb, new_class, mid, mrb_bob_init)) { + if (mrb_func_basic_p(mrb, new_class, mid, mrb_class_initialize)) { + mrb_class_initialize(mrb, new_class); + } + else { mrb_funcall_with_block(mrb, new_class, mid, n, &super, blk); } mrb_class_inherited(mrb, mrb_class_ptr(super), mrb_class_ptr(new_class)); |
