From 671b498070c0fa33fa6afaf4f4672441ae61661a Mon Sep 17 00:00:00 2001 From: nobu Date: Tue, 19 Oct 2010 03:25:29 +0000 Subject: Commit miss. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29534 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- string.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'string.c') diff --git a/string.c b/string.c index daabb97a46..efb0481937 100644 --- a/string.c +++ b/string.c @@ -350,6 +350,14 @@ str_mod_check(VALUE s, const char *p, long len) } } +static inline void +str_frozen_check(VALUE s) +{ + if (OBJ_FROZEN(s)) { + rb_raise(rb_eRuntimeError, "string frozen"); + } +} + size_t rb_str_capacity(VALUE str) { @@ -1242,7 +1250,7 @@ str_modifiable(VALUE str) if (FL_TEST(str, STR_TMPLOCK)) { rb_raise(rb_eRuntimeError, "can't modify string; temporarily locked"); } - rb_check_frozen(str); + if (OBJ_FROZEN(str)) rb_error_frozen("string"); if (!OBJ_UNTRUSTED(str) && rb_safe_level() >= 4) rb_raise(rb_eSecurityError, "Insecure: can't modify string"); } @@ -1327,7 +1335,7 @@ void rb_str_associate(VALUE str, VALUE add) { /* sanity check */ - rb_check_frozen(str); + if (OBJ_FROZEN(str)) rb_error_frozen("string"); if (STR_ASSOC_P(str)) { /* already associated */ rb_ary_concat(RSTRING(str)->as.heap.aux.shared, add); @@ -3538,7 +3546,7 @@ rb_str_sub_bang(int argc, VALUE *argv, VALUE str) repl = rb_obj_as_string(repl); } str_mod_check(str, p, len); - rb_check_frozen(str); + str_frozen_check(str); } else { repl = rb_reg_regsub(repl, str, regs, pat); -- cgit v1.2.3