diff options
| author | Blaž Hrastnik <[email protected]> | 2015-07-10 21:00:14 +0200 |
|---|---|---|
| committer | Blaž Hrastnik <[email protected]> | 2015-07-13 14:04:42 +0200 |
| commit | ad9f32c5a876d5f230584b3c9abe77833943e6e6 (patch) | |
| tree | d6f5a4d5ed1ecbb4b3f8916ecc298a5107bf4e6a /src | |
| parent | d046814d8bec1f3be1994918d60f9345a50a0e23 (diff) | |
| download | mruby-ad9f32c5a876d5f230584b3c9abe77833943e6e6.tar.gz mruby-ad9f32c5a876d5f230584b3c9abe77833943e6e6.zip | |
Expose insert position, which should be at origin for include and klass for
prepend.
Diffstat (limited to 'src')
| -rw-r--r-- | src/class.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/src/class.c b/src/class.c index 3b1ea2321..c1d377e86 100644 --- a/src/class.c +++ b/src/class.c @@ -770,11 +770,8 @@ boot_defclass(mrb_state *mrb, struct RClass *super) } MRB_API inline void -include_module_at(mrb_state *mrb, struct RClass *c, struct RClass *m, int search_super) +include_module_at(mrb_state *mrb, struct RClass *c, struct RClass *ins_pos, struct RClass *m, int search_super) { - struct RClass *ins_pos; - - ins_pos = c; while (m) { struct RClass *p = c, *ic; int superclass_seen = 0; @@ -816,7 +813,7 @@ include_module_at(mrb_state *mrb, struct RClass *c, struct RClass *m, int search MRB_API void mrb_include_module(mrb_state *mrb, struct RClass *c, struct RClass *m) { - include_module_at(mrb, c, m, FALSE); + include_module_at(mrb, c, c->origin, m, FALSE); } MRB_API void @@ -835,7 +832,7 @@ mrb_prepend_module(mrb_state *mrb, struct RClass *c, struct RClass *m) origin->mt = c->mt; c->mt = kh_init(mt, mrb); } - include_module_at(mrb, c, m, FALSE); // changed = + include_module_at(mrb, c, c, m, FALSE); // changed = if (changed) { //rb_vm_check_redefinition_by_prepend(klass); } |
