[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]