summaryrefslogtreecommitdiff
path: root/string.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-10-19 03:25:29 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-10-19 03:25:29 +0000
commit671b498070c0fa33fa6afaf4f4672441ae61661a (patch)
tree07e887952acaa6df812940779b9a1ad907fc727f /string.c
parent12cbb588193ac5148b6421fc8953c817acb0ae9f (diff)
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.c14
1 files changed, 11 insertions, 3 deletions
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);