Should not overwrite `MRB_PROC_TARGET_CLASS(p)` if `p` has env; fix #3905

parent 165e7b18
......@@ -443,8 +443,9 @@ mrb_define_method_raw(mrb_state *mrb, struct RClass *c, mrb_sym mid, mrb_method_
p->flags |= MRB_PROC_SCOPE;
p->c = NULL;
mrb_field_write_barrier(mrb, (struct RBasic*)c, (struct RBasic*)p);
MRB_PROC_SET_TARGET_CLASS(p, c);
mrb_field_write_barrier(mrb, (struct RBasic*)p, (struct RBasic*)c);
if (!MRB_PROC_ENV_P(p)) {
MRB_PROC_SET_TARGET_CLASS(p, c);
}
}
mc_clear_by_id(mrb, c, mid);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment