diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2019-06-30 16:29:55 +0900 |
|---|---|---|
| committer | GitHub <[email protected]> | 2019-06-30 16:29:55 +0900 |
| commit | 8f19d516f90b9182ef0d200e49fbee74325f9687 (patch) | |
| tree | 6b4099c5c7a8e6b0b7bc542d66ca601c682face6 /src | |
| parent | cf6972408335a69f2f6cc007f74c6afd316d0d96 (diff) | |
| parent | 97c9e6b00032cd8a7132b43911c05e44732a4c56 (diff) | |
| download | mruby-8f19d516f90b9182ef0d200e49fbee74325f9687.tar.gz mruby-8f19d516f90b9182ef0d200e49fbee74325f9687.zip | |
Merge pull request #4544 from shuujii/fix-include-prepend-and-extend-to-frozen-object
Fix `include`, `prepend` and `extend` to frozen object
Diffstat (limited to 'src')
| -rw-r--r-- | src/class.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/class.c b/src/class.c index 373f2aec7..1064870a8 100644 --- a/src/class.c +++ b/src/class.c @@ -1070,8 +1070,8 @@ include_module_at(mrb_state *mrb, struct RClass *c, struct RClass *ins_pos, stru MRB_API void mrb_include_module(mrb_state *mrb, struct RClass *c, struct RClass *m) { - int changed = include_module_at(mrb, c, find_origin(c), m, 1); - if (changed < 0) { + mrb_check_frozen(mrb, c); + if (include_module_at(mrb, c, find_origin(c), m, 1) < 0) { mrb_raise(mrb, E_ARGUMENT_ERROR, "cyclic include detected"); } } @@ -1082,6 +1082,7 @@ mrb_prepend_module(mrb_state *mrb, struct RClass *c, struct RClass *m) struct RClass *origin; int changed = 0; + mrb_check_frozen(mrb, c); if (!(c->flags & MRB_FL_CLASS_IS_PREPENDED)) { origin = (struct RClass*)mrb_obj_alloc(mrb, MRB_TT_ICLASS, c); origin->flags |= MRB_FL_CLASS_IS_ORIGIN | MRB_FL_CLASS_IS_INHERITED; |
