diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-10-19 03:25:29 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-10-19 03:25:29 +0000 |
commit | 671b498070c0fa33fa6afaf4f4672441ae61661a (patch) | |
tree | 07e887952acaa6df812940779b9a1ad907fc727f /string.c | |
parent | 12cbb588193ac5148b6421fc8953c817acb0ae9f (diff) | |
download | ruby-671b498070c0fa33fa6afaf4f4672441ae61661a.tar.gz |
Commit miss.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29534 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'string.c')
-rw-r--r-- | string.c | 14 |
1 files changed, 11 insertions, 3 deletions
@@ -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); |