summaryrefslogtreecommitdiff
path: root/error.c
diff options
context:
space:
mode:
Diffstat (limited to 'error.c')
-rw-r--r--error.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/error.c b/error.c
index 9890fddcef..bb063a1772 100644
--- a/error.c
+++ b/error.c
@@ -3914,14 +3914,20 @@ rb_error_frozen_object(VALUE frozen_obj)
void
rb_check_frozen(VALUE obj)
{
- rb_check_frozen_internal(obj);
+ if (RB_UNLIKELY(RB_OBJ_FROZEN(obj))) {
+ rb_error_frozen_object(obj);
+ }
+
+ if (RB_UNLIKELY(CHILLED_STRING_P(obj))) {
+ rb_str_modify(obj);
+ }
}
void
rb_check_copyable(VALUE obj, VALUE orig)
{
if (!FL_ABLE(obj)) return;
- rb_check_frozen_internal(obj);
+ rb_check_frozen(obj);
if (!FL_ABLE(orig)) return;
}