summaryrefslogtreecommitdiff
path: root/vm_method.c
diff options
context:
space:
mode:
Diffstat (limited to 'vm_method.c')
-rw-r--r--vm_method.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/vm_method.c b/vm_method.c
index 41c53a5b47..a76277c81d 100644
--- a/vm_method.c
+++ b/vm_method.c
@@ -211,8 +211,10 @@ rb_method_entry_make(VALUE klass, ID mid, rb_method_type_t type,
rb_class2name(rb_ivar_get(klass, attached)));
mid = ID_ALLOCATOR;
}
+ if (OBJ_FROZEN(klass)) {
+ rb_error_frozen("class/module");
+ }
- rb_check_frozen(klass);
mtbl = RCLASS_M_TBL(klass);
/* check re-definition */
@@ -461,7 +463,8 @@ remove_method(VALUE klass, ID mid)
if (rb_safe_level() >= 4 && !OBJ_UNTRUSTED(klass)) {
rb_raise(rb_eSecurityError, "Insecure: can't remove method");
}
- rb_check_frozen(klass);
+ if (OBJ_FROZEN(klass))
+ rb_error_frozen("class/module");
if (mid == object_id || mid == id__send__ || mid == idInitialize) {
rb_warn("removing `%s' may cause serious problems", rb_id2name(mid));
}