mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Fix super from aliased methods to work correctly; fix #4718
We needed to preserve the original method name somewhere. We kept it in the `env` structure pointed from aliased methods. #1457 and #1531 tried to address this issue. But this patch is more memory efficient. Limitation: this fix does not support `super` from methods defined by `define_method`. This limitation may be addressed in the future, but it's low priority.
This commit is contained in:
@@ -77,6 +77,9 @@ closure_setup(mrb_state *mrb, struct RProc *p)
|
||||
e->c = tc;
|
||||
mrb_field_write_barrier(mrb, (struct RBasic*)e, (struct RBasic*)tc);
|
||||
}
|
||||
if (MRB_PROC_ENV_P(up) && MRB_PROC_ENV(up)->cxt == NULL) {
|
||||
e->mid = MRB_PROC_ENV(up)->mid;
|
||||
}
|
||||
}
|
||||
if (e) {
|
||||
p->e.env = e;
|
||||
|
||||
Reference in New Issue
Block a user