ruby-changes:17578
From: nobu <ko1@a...>
Date: Sun, 24 Oct 2010 17:14:15 +0900 (JST)
Subject: [ruby-changes:17578] Ruby:r29583 (trunk): * array.c, gc.c, hash.c, object.c, string.c, struct.c,
nobu 2010-10-24 17:14:05 +0900 (Sun, 24 Oct 2010) New Revision: 29583 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=29583 Log: * array.c, gc.c, hash.c, object.c, string.c, struct.c, transcode.c, variable.c, vm.c, vm_insnhelper.c, vm_method.c: replace calls to rb_error_frozen() with rb_check_frozen(). a patch from Run Paint Run Run at [ruby-core:32014] Modified files: trunk/ChangeLog trunk/array.c trunk/gc.c trunk/hash.c trunk/object.c trunk/string.c trunk/struct.c trunk/transcode.c trunk/variable.c trunk/vm.c trunk/vm_insnhelper.c trunk/vm_method.c Index: array.c =================================================================== --- array.c (revision 29582) +++ array.c (revision 29583) @@ -242,7 +242,7 @@ static inline void rb_ary_modify_check(VALUE ary) { - if (OBJ_FROZEN(ary)) rb_error_frozen("array"); + rb_check_frozen(ary); if (!OBJ_UNTRUSTED(ary) && rb_safe_level() >= 4) rb_raise(rb_eSecurityError, "Insecure: can't modify array"); } Index: ChangeLog =================================================================== --- ChangeLog (revision 29582) +++ ChangeLog (revision 29583) @@ -1,5 +1,10 @@ -Sun Oct 24 17:05:51 2010 Nobuyoshi Nakada <nobu@r...> +Sun Oct 24 17:14:00 2010 Nobuyoshi Nakada <nobu@r...> + * array.c, gc.c, hash.c, object.c, string.c, struct.c, + transcode.c, variable.c, vm.c, vm_insnhelper.c, vm_method.c: + replace calls to rb_error_frozen() with rb_check_frozen(). a + patch from Run Paint Run Run at [ruby-core:32014] + * include/ruby/intern.h (rb_check_frozen): optimize. [ruby-core:32878] Index: variable.c =================================================================== --- variable.c (revision 29582) +++ variable.c (revision 29583) @@ -1043,7 +1043,7 @@ if (!OBJ_UNTRUSTED(obj) && rb_safe_level() >= 4) rb_raise(rb_eSecurityError, "Insecure: can't modify instance variable"); - if (OBJ_FROZEN(obj)) rb_error_frozen("object"); + rb_check_frozen(obj); switch (TYPE(obj)) { case T_OBJECT: iv_index_tbl = ROBJECT_IV_INDEX_TBL(obj); @@ -1305,7 +1305,7 @@ if (!OBJ_UNTRUSTED(obj) && rb_safe_level() >= 4) rb_raise(rb_eSecurityError, "Insecure: can't modify instance variable"); - if (OBJ_FROZEN(obj)) rb_error_frozen("object"); + rb_check_frozen(obj); if (!rb_is_instance_id(id)) { rb_name_error(id, "`%s' is not allowed as an instance variable name", rb_id2name(id)); } @@ -1653,8 +1653,7 @@ if (!OBJ_UNTRUSTED(mod) && rb_safe_level() >= 4) rb_raise(rb_eSecurityError, "Insecure: can't remove constant"); - if (OBJ_FROZEN(mod)) rb_error_frozen("class/module"); - + rb_check_frozen(mod); if (!RCLASS_IV_TBL(mod) || !st_delete(RCLASS_IV_TBL(mod), &n, &v)) { if (rb_const_defined_at(mod, id)) { rb_name_error(id, "cannot remove %s::%s", @@ -1819,14 +1818,7 @@ if (!OBJ_UNTRUSTED(klass) && rb_safe_level() >= 4) rb_raise(rb_eSecurityError, "Insecure: can't set %s", dest); - if (OBJ_FROZEN(klass)) { - if (BUILTIN_TYPE(klass) == T_MODULE) { - rb_error_frozen("module"); - } - else { - rb_error_frozen("class"); - } - } + rb_check_frozen(klass); if (!RCLASS_IV_TBL(klass)) { RCLASS_IV_TBL(klass) = st_init_numtable(); } @@ -2075,8 +2067,7 @@ } if (!OBJ_UNTRUSTED(mod) && rb_safe_level() >= 4) rb_raise(rb_eSecurityError, "Insecure: can't remove class variable"); - if (OBJ_FROZEN(mod)) rb_error_frozen("class/module"); - + rb_check_frozen(mod); if (RCLASS_IV_TBL(mod) && st_delete(RCLASS_IV_TBL(mod), &n, &val)) { return (VALUE)val; } Index: string.c =================================================================== --- string.c (revision 29582) +++ string.c (revision 29583) @@ -350,14 +350,6 @@ } } -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) { @@ -1250,7 +1242,7 @@ if (FL_TEST(str, STR_TMPLOCK)) { rb_raise(rb_eRuntimeError, "can't modify string; temporarily locked"); } - if (OBJ_FROZEN(str)) rb_error_frozen("string"); + rb_check_frozen(str); if (!OBJ_UNTRUSTED(str) && rb_safe_level() >= 4) rb_raise(rb_eSecurityError, "Insecure: can't modify string"); } @@ -1335,7 +1327,7 @@ rb_str_associate(VALUE str, VALUE add) { /* sanity check */ - if (OBJ_FROZEN(str)) rb_error_frozen("string"); + rb_check_frozen(str); if (STR_ASSOC_P(str)) { /* already associated */ rb_ary_concat(RSTRING(str)->as.heap.aux.shared, add); @@ -3546,7 +3538,7 @@ repl = rb_obj_as_string(repl); } str_mod_check(str, p, len); - str_frozen_check(str); + rb_check_frozen(str); } else { repl = rb_reg_regsub(repl, str, regs, pat); Index: object.c =================================================================== --- object.c (revision 29582) +++ object.c (revision 29583) @@ -712,9 +712,7 @@ { rb_secure(4); if (!OBJ_TAINTED(obj)) { - if (OBJ_FROZEN(obj)) { - rb_error_frozen("object"); - } + rb_check_frozen(obj); OBJ_TAINT(obj); } return obj; @@ -733,9 +731,7 @@ { rb_secure(3); if (OBJ_TAINTED(obj)) { - if (OBJ_FROZEN(obj)) { - rb_error_frozen("object"); - } + rb_check_frozen(obj); FL_UNSET(obj, FL_TAINT); } return obj; @@ -768,9 +764,7 @@ { rb_secure(4); if (!OBJ_UNTRUSTED(obj)) { - if (OBJ_FROZEN(obj)) { - rb_error_frozen("object"); - } + rb_check_frozen(obj); OBJ_UNTRUST(obj); } return obj; @@ -789,9 +783,7 @@ { rb_secure(3); if (OBJ_UNTRUSTED(obj)) { - if (OBJ_FROZEN(obj)) { - rb_error_frozen("object"); - } + rb_check_frozen(obj); FL_UNSET(obj, FL_UNTRUSTED); } return obj; Index: vm_method.c =================================================================== --- vm_method.c (revision 29582) +++ vm_method.c (revision 29583) @@ -211,10 +211,8 @@ rb_class2name(rb_ivar_get(klass, attached))); mid = ID_ALLOCATOR; } - if (OBJ_FROZEN(klass)) { - rb_error_frozen("class/module"); - } + rb_check_frozen(klass); mtbl = RCLASS_M_TBL(klass); /* check re-definition */ @@ -463,8 +461,7 @@ if (rb_safe_level() >= 4 && !OBJ_UNTRUSTED(klass)) { rb_raise(rb_eSecurityError, "Insecure: can't remove method"); } - if (OBJ_FROZEN(klass)) - rb_error_frozen("class/module"); + rb_check_frozen(klass); if (mid == object_id || mid == id__send__ || mid == idInitialize) { rb_warn("removing `%s' may cause serious problems", rb_id2name(mid)); } Index: struct.c =================================================================== --- struct.c (revision 29582) +++ struct.c (revision 29583) @@ -151,7 +151,7 @@ static void rb_struct_modify(VALUE s) { - if (OBJ_FROZEN(s)) rb_error_frozen("Struct"); + rb_check_frozen(s); if (!OBJ_UNTRUSTED(s) && rb_safe_level() >= 4) rb_raise(rb_eSecurityError, "Insecure: can't modify Struct"); } Index: gc.c =================================================================== --- gc.c (revision 29582) +++ gc.c (revision 29583) @@ -2722,7 +2722,7 @@ undefine_final(VALUE os, VALUE obj) { rb_objspace_t *objspace = &rb_objspace; - if (OBJ_FROZEN(obj)) rb_error_frozen("object"); + rb_check_frozen(obj); if (finalizer_table) { st_data_t data = obj; st_delete(finalizer_table, &data, 0); @@ -2748,7 +2748,7 @@ st_data_t data; rb_scan_args(argc, argv, "11", &obj, &block); - if (OBJ_FROZEN(obj)) rb_error_frozen("object"); + rb_check_frozen(obj); if (argc == 1) { block = rb_block_proc(); } Index: hash.c =================================================================== --- hash.c (revision 29582) +++ hash.c (revision 29583) @@ -248,7 +248,7 @@ static void rb_hash_modify_check(VALUE hash) { - if (OBJ_FROZEN(hash)) rb_error_frozen("hash"); + rb_check_frozen(hash); if (!OBJ_UNTRUSTED(hash) && rb_safe_level() >= 4) rb_raise(rb_eSecurityError, "Insecure: can't modify hash"); } Index: vm.c =================================================================== --- vm.c (revision 29582) +++ vm.c (revision 29583) @@ -1858,10 +1858,7 @@ rb_id2name(id), rb_obj_classname(obj)); } - if (OBJ_FROZEN(obj)) { - rb_error_frozen("object"); - } - + rb_check_frozen(obj); klass = rb_singleton_class(obj); noex = NOEX_PUBLIC; } Index: vm_insnhelper.c =================================================================== --- vm_insnhelper.c (revision 29582) +++ vm_insnhelper.c (revision 29583) @@ -1298,10 +1298,9 @@ if (!OBJ_UNTRUSTED(obj) && rb_safe_level() >= 4) { rb_raise(rb_eSecurityError, "Insecure: can't modify instance variable"); } - if (OBJ_FROZEN(obj)) { - rb_error_frozen("object"); - } + rb_check_frozen(obj); + if (TYPE(obj) == T_OBJECT) { VALUE klass = RBASIC(obj)->klass; st_data_t index; Index: transcode.c =================================================================== --- transcode.c (revision 29582) +++ transcode.c (revision 29583) @@ -2711,9 +2711,7 @@ VALUE newstr; int encidx; - if (OBJ_FROZEN(str)) { /* in future, may use str_frozen_check from string.c, but that's currently static */ - rb_raise(rb_eRuntimeError, "string frozen"); - } + rb_check_frozen(str); newstr = str; encidx = str_transcode(argc, argv, &newstr); -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/