diff options
| author | Jeremy Evans <code@jeremyevans.net> | 2025-11-22 19:58:43 -0800 |
|---|---|---|
| committer | Jeremy Evans <code@jeremyevans.net> | 2025-12-10 07:35:50 +0900 |
| commit | e436dba9fee4c75104212ad0fd16ab7f753985c4 (patch) | |
| tree | 9b95734630cf5e0517604acdda4d0405a6b14518 /eval.c | |
| parent | 76fb0d244b95a23116bfe72bb2422395c3a76477 (diff) | |
Use rb_error_frozen_object in rb_class_modify_check
This provides information on the class of the frozen object. It also
results in a much simpler implementation.
Fixes [Bug #21374]
Diffstat (limited to 'eval.c')
| -rw-r--r-- | eval.c | 32 |
1 files changed, 1 insertions, 31 deletions
@@ -428,40 +428,10 @@ rb_class_modify_check(VALUE klass) rb_class_set_initialized(klass); } if (OBJ_FROZEN(klass)) { - const char *desc; - if (RCLASS_SINGLETON_P(klass)) { - desc = "object"; klass = RCLASS_ATTACHED_OBJECT(klass); - if (!SPECIAL_CONST_P(klass)) { - switch (BUILTIN_TYPE(klass)) { - case T_MODULE: - case T_ICLASS: - desc = "Module"; - break; - case T_CLASS: - desc = "Class"; - break; - default: - break; - } - } - } - else { - switch (BUILTIN_TYPE(klass)) { - case T_MODULE: - case T_ICLASS: - desc = "module"; - break; - case T_CLASS: - desc = "class"; - break; - default: - Check_Type(klass, T_CLASS); - UNREACHABLE; - } } - rb_frozen_error_raise(klass, "can't modify frozen %s: %"PRIsVALUE, desc, klass); + rb_error_frozen_object(klass); } } |
