summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorBlaž Hrastnik <[email protected]>2015-07-10 21:00:14 +0200
committerBlaž Hrastnik <[email protected]>2015-07-13 14:04:42 +0200
commitad9f32c5a876d5f230584b3c9abe77833943e6e6 (patch)
treed6f5a4d5ed1ecbb4b3f8916ecc298a5107bf4e6a /src
parentd046814d8bec1f3be1994918d60f9345a50a0e23 (diff)
downloadmruby-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.c9
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);
}