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

ruby-changes:40367

From: nobu <ko1@a...>
Date: Wed, 4 Nov 2015 16:27:25 +0900 (JST)
Subject: [ruby-changes:40367] nobu:r52448 (trunk): ext: use RARRAY_CONST_PTR

nobu	2015-11-04 16:27:10 +0900 (Wed, 04 Nov 2015)

  New Revision: 52448

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=52448

  Log:
    ext: use RARRAY_CONST_PTR
    
    * ext/bigdecimal/bigdecimal.c: use RARRAY_CONST_PTR just fore
      reference instead of RARRAY_PTR, to keep the array WB-protected.

  Modified files:
    trunk/ext/bigdecimal/bigdecimal.c
    trunk/ext/date/date_core.c
    trunk/ext/dbm/dbm.c
    trunk/ext/fiddle/closure.c
    trunk/ext/fiddle/function.c
    trunk/ext/gdbm/gdbm.c
    trunk/ext/io/console/console.c
    trunk/ext/openssl/ossl_ocsp.c
    trunk/ext/openssl/ossl_ssl.c
    trunk/ext/openssl/ossl_x509cert.c
    trunk/ext/openssl/ossl_x509crl.c
    trunk/ext/openssl/ossl_x509req.c
    trunk/ext/openssl/ossl_x509revoked.c
    trunk/ext/psych/psych_emitter.c
    trunk/ext/readline/readline.c
    trunk/ext/sdbm/init.c
    trunk/ext/socket/ancdata.c
    trunk/ext/socket/socket.c
    trunk/ext/tk/tcltklib.c
    trunk/ext/tk/tkutil/tkutil.c
Index: ext/bigdecimal/bigdecimal.c
===================================================================
--- ext/bigdecimal/bigdecimal.c	(revision 52447)
+++ ext/bigdecimal/bigdecimal.c	(revision 52448)
@@ -699,7 +699,7 @@ BigDecimal_to_i(VALUE self) https://github.com/ruby/ruby/blob/trunk/ext/bigdecimal/bigdecimal.c#L699
     }
     else {
 	VALUE a = BigDecimal_split(self);
-	VALUE digits = RARRAY_PTR(a)[1];
+	VALUE digits = RARRAY_CONST_PTR(a)[1];
 	VALUE numerator = rb_funcall(digits, rb_intern("to_i"), 0);
 	VALUE ret;
 	ssize_t dpower = e - (ssize_t)RSTRING_LEN(digits);
@@ -788,7 +788,7 @@ BigDecimal_to_r(VALUE self) https://github.com/ruby/ruby/blob/trunk/ext/bigdecimal/bigdecimal.c#L788
     sign = VpGetSign(p);
     power = VpExponent10(p);
     a = BigDecimal_split(self);
-    digits = RARRAY_PTR(a)[1];
+    digits = RARRAY_CONST_PTR(a)[1];
     denomi_power = power - RSTRING_LEN(digits);
     numerator = rb_funcall(digits, rb_intern("to_i"), 0);
 
Index: ext/sdbm/init.c
===================================================================
--- ext/sdbm/init.c	(revision 52447)
+++ ext/sdbm/init.c	(revision 52448)
@@ -530,7 +530,7 @@ fsdbm_delete_if(VALUE obj) https://github.com/ruby/ruby/blob/trunk/ext/sdbm/init.c#L530
     }
 
     for (i = 0; i < RARRAY_LEN(ary); i++) {
-	keystr = RARRAY_PTR(ary)[i];
+	keystr = RARRAY_CONST_PTR(ary)[i];
 	ExportStringValue(keystr);
 	key.dptr = RSTRING_PTR(keystr);
 	key.dsize = RSTRING_LENINT(keystr);
@@ -655,11 +655,13 @@ fsdbm_store(VALUE obj, VALUE keystr, VAL https://github.com/ruby/ruby/blob/trunk/ext/sdbm/init.c#L655
 static VALUE
 update_i(RB_BLOCK_CALL_FUNC_ARGLIST(pair, dbm))
 {
+    const VALUE *ptr;
     Check_Type(pair, T_ARRAY);
     if (RARRAY_LEN(pair) < 2) {
 	rb_raise(rb_eArgError, "pair must be [key, value]");
     }
-    fsdbm_store(dbm, RARRAY_PTR(pair)[0], RARRAY_PTR(pair)[1]);
+    ptr = RARRAY_CONST_PTR(pair);
+    fsdbm_store(dbm, ptr[0], ptr[1]);
     return Qnil;
 }
 
Index: ext/date/date_core.c
===================================================================
--- ext/date/date_core.c	(revision 52447)
+++ ext/date/date_core.c	(revision 52448)
@@ -3826,14 +3826,14 @@ rt_complete_frags(VALUE klass, VALUE has https://github.com/ruby/ruby/blob/trunk/ext/date/date_core.c#L3826
 	for (i = 0; i < RARRAY_LEN(tab); i++) {
 	    VALUE x, a;
 
-	    x = RARRAY_PTR(tab)[i];
-	    a = RARRAY_PTR(x)[1];
+	    x = RARRAY_CONST_PTR(tab)[i];
+	    a = RARRAY_CONST_PTR(x)[1];
 
 	    {
 		long j, n = 0;
 
 		for (j = 0; j < RARRAY_LEN(a); j++)
-		    if (!NIL_P(ref_hash0(RARRAY_PTR(a)[j])))
+		    if (!NIL_P(ref_hash0(RARRAY_CONST_PTR(a)[j])))
 			n++;
 		if (n > eno) {
 		    eno = n;
@@ -3845,8 +3845,8 @@ rt_complete_frags(VALUE klass, VALUE has https://github.com/ruby/ruby/blob/trunk/ext/date/date_core.c#L3845
 	    g = 0;
 	else {
 	    g = 1;
-	    k = RARRAY_PTR(RARRAY_PTR(tab)[idx])[0];
-	    a = RARRAY_PTR(RARRAY_PTR(tab)[idx])[1];
+	    k = RARRAY_CONST_PTR(RARRAY_CONST_PTR(tab)[idx])[0];
+	    a = RARRAY_CONST_PTR(RARRAY_CONST_PTR(tab)[idx])[1];
 	    e =	eno;
 	}
     }
@@ -3867,7 +3867,7 @@ rt_complete_frags(VALUE klass, VALUE has https://github.com/ruby/ruby/blob/trunk/ext/date/date_core.c#L3867
 	    long i;
 
 	    for (i = 0; i < RARRAY_LEN(a); i++) {
-		VALUE e = RARRAY_PTR(a)[i];
+		VALUE e = RARRAY_CONST_PTR(a)[i];
 
 		if (!NIL_P(ref_hash0(e)))
 		    break;
@@ -3884,7 +3884,7 @@ rt_complete_frags(VALUE klass, VALUE has https://github.com/ruby/ruby/blob/trunk/ext/date/date_core.c#L3884
 	    long i;
 
 	    for (i = 0; i < RARRAY_LEN(a); i++) {
-		VALUE e = RARRAY_PTR(a)[i];
+		VALUE e = RARRAY_CONST_PTR(a)[i];
 
 		if (!NIL_P(ref_hash0(e)))
 		    break;
@@ -3908,7 +3908,7 @@ rt_complete_frags(VALUE klass, VALUE has https://github.com/ruby/ruby/blob/trunk/ext/date/date_core.c#L3908
 	    long i;
 
 	    for (i = 0; i < RARRAY_LEN(a); i++) {
-		VALUE e = RARRAY_PTR(a)[i];
+		VALUE e = RARRAY_CONST_PTR(a)[i];
 
 		if (!NIL_P(ref_hash0(e)))
 		    break;
@@ -3925,7 +3925,7 @@ rt_complete_frags(VALUE klass, VALUE has https://github.com/ruby/ruby/blob/trunk/ext/date/date_core.c#L3925
 	    long i;
 
 	    for (i = 0; i < RARRAY_LEN(a); i++) {
-		VALUE e = RARRAY_PTR(a)[i];
+		VALUE e = RARRAY_CONST_PTR(a)[i];
 
 		if (!NIL_P(ref_hash0(e)))
 		    break;
@@ -7085,16 +7085,16 @@ d_lite_marshal_load(VALUE self, VALUE a) https://github.com/ruby/ruby/blob/trunk/ext/date/date_core.c#L7085
 
 
 	    if  (RARRAY_LEN(a) == 2) {
-		ajd = f_sub(RARRAY_PTR(a)[0], half_days_in_day);
+		ajd = f_sub(RARRAY_CONST_PTR(a)[0], half_days_in_day);
 		of = INT2FIX(0);
-		sg = RARRAY_PTR(a)[1];
+		sg = RARRAY_CONST_PTR(a)[1];
 		if (!k_numeric_p(sg))
 		    sg = DBL2NUM(RTEST(sg) ? GREGORIAN : JULIAN);
 	    }
 	    else {
-		ajd = RARRAY_PTR(a)[0];
-		of = RARRAY_PTR(a)[1];
-		sg = RARRAY_PTR(a)[2];
+		ajd = RARRAY_CONST_PTR(a)[0];
+		of = RARRAY_CONST_PTR(a)[1];
+		sg = RARRAY_CONST_PTR(a)[2];
 	    }
 
 	    old_to_new(ajd, of, sg,
@@ -7119,12 +7119,12 @@ d_lite_marshal_load(VALUE self, VALUE a) https://github.com/ruby/ruby/blob/trunk/ext/date/date_core.c#L7119
 	    int jd, df, of;
 	    double sg;
 
-	    nth = RARRAY_PTR(a)[0];
-	    jd = NUM2INT(RARRAY_PTR(a)[1]);
-	    df = NUM2INT(RARRAY_PTR(a)[2]);
-	    sf = RARRAY_PTR(a)[3];
-	    of = NUM2INT(RARRAY_PTR(a)[4]);
-	    sg = NUM2DBL(RARRAY_PTR(a)[5]);
+	    nth = RARRAY_CONST_PTR(a)[0];
+	    jd = NUM2INT(RARRAY_CONST_PTR(a)[1]);
+	    df = NUM2INT(RARRAY_CONST_PTR(a)[2]);
+	    sf = RARRAY_CONST_PTR(a)[3];
+	    of = NUM2INT(RARRAY_CONST_PTR(a)[4]);
+	    sg = NUM2DBL(RARRAY_CONST_PTR(a)[5]);
 	    if (!df && f_zero_p(sf) && !of) {
 		set_to_simple(self, &dat->s, nth, jd, sg, 0, 0, 0, HAVE_JD);
 	    } else {
Index: ext/tk/tcltklib.c
===================================================================
--- ext/tk/tcltklib.c	(revision 52447)
+++ ext/tk/tcltklib.c	(revision 52448)
@@ -42,6 +42,9 @@ int rb_thread_check_trap_pending(void); https://github.com/ruby/ruby/blob/trunk/ext/tk/tcltklib.c#L42
 #define RARRAY_PTR(s) (RARRAY(s)->ptr)
 #define RARRAY_LEN(s) (RARRAY(s)->len)
 #endif
+#if !defined(RARRAY_CONST_PTR)
+#define RARRAY_CONST_PTR(s) (const VALUE *)RARRAY_PTR(s)
+#endif
 
 #ifdef OBJ_UNTRUST
 #define RbTk_OBJ_UNTRUST(x)  do {OBJ_TAINT(x); OBJ_UNTRUST(x);} while (0)
@@ -1889,15 +1892,15 @@ set_max_block_time(self, time) https://github.com/ruby/ruby/blob/trunk/ext/tk/tcltklib.c#L1892
     case T_BIGNUM:
         /* time is micro-second value */
         divmod = rb_funcall(time, rb_intern("divmod"), 1, LONG2NUM(1000000));
-        tcl_time.sec  = NUM2LONG(RARRAY_PTR(divmod)[0]);
-        tcl_time.usec = NUM2LONG(RARRAY_PTR(divmod)[1]);
+        tcl_time.sec  = NUM2LONG(RARRAY_CONST_PTR(divmod)[0]);
+        tcl_time.usec = NUM2LONG(RARRAY_CONST_PTR(divmod)[1]);
         break;
 
     case T_FLOAT:
         /* time is second value */
         divmod = rb_funcall(time, rb_intern("divmod"), 1, INT2FIX(1));
-        tcl_time.sec  = NUM2LONG(RARRAY_PTR(divmod)[0]);
-        tcl_time.usec = (long)(NUM2DBL(RARRAY_PTR(divmod)[1]) * 1000000);
+        tcl_time.sec  = NUM2LONG(RARRAY_CONST_PTR(divmod)[0]);
+        tcl_time.usec = (long)(NUM2DBL(RARRAY_CONST_PTR(divmod)[1]) * 1000000);
 
     default:
         {
@@ -7210,7 +7213,7 @@ tk_funcall(func, argc, argv, obj) https://github.com/ruby/ruby/blob/trunk/ext/tk/tcltklib.c#L7213
     DUMP2("back from handler (current thread:%"PRIxVALUE")", current);
 
     /* get result & free allocated memory */
-    ret = RARRAY_PTR(result)[0];
+    ret = RARRAY_CONST_PTR(result)[0];
 #if 0 /* use Tcl_EventuallyFree */
     Tcl_EventuallyFree((ClientData)alloc_done, TCL_DYNAMIC); /* XXXXXXXX */
 #else
@@ -7694,7 +7697,7 @@ ip_eval(self, str) https://github.com/ruby/ruby/blob/trunk/ext/tk/tcltklib.c#L7697
     DUMP2("back from handler (current thread:%"PRIxVALUE")", current);
 
     /* get result & free allocated memory */
-    ret = RARRAY_PTR(result)[0];
+    ret = RARRAY_CONST_PTR(result)[0];
 
 #if 0 /* use Tcl_EventuallyFree */
     Tcl_EventuallyFree((ClientData)alloc_done, TCL_DYNAMIC); /* XXXXXXXX */
@@ -9193,7 +9196,7 @@ ip_invoke_with_position(argc, argv, obj, https://github.com/ruby/ruby/blob/trunk/ext/tk/tcltklib.c#L9196
     DUMP2("back from handler (current thread:%"PRIxVALUE")", current);
 
     /* get result & free allocated memory */
-    ret = RARRAY_PTR(result)[0];
+    ret = RARRAY_CONST_PTR(result)[0];
 #if 0 /* use Tcl_EventuallyFree */
     Tcl_EventuallyFree((ClientData)alloc_done, TCL_DYNAMIC); /* XXXXXXXX */
 #else
Index: ext/tk/tkutil/tkutil.c
===================================================================
--- ext/tk/tkutil/tkutil.c	(revision 52447)
+++ ext/tk/tkutil/tkutil.c	(revision 52448)
@@ -37,6 +37,9 @@ static int rb_thread_critical; /* dummy https://github.com/ruby/ruby/blob/trunk/ext/tk/tkutil/tkutil.c#L37
 #define RARRAY_PTR(s) (RARRAY(s)->ptr)
 #define RARRAY_LEN(s) (RARRAY(s)->len)
 #endif
+#if !defined(RARRAY_CONST_PTR)
+#define RARRAY_CONST_PTR(s) (const VALUE *)RARRAY_PTR(s)
+#endif
 
 #if defined(HAVE_STRNDUP) && !defined(_GNU_SOURCE)
 extern char *strndup(const char* _ptr, size_t _len);
@@ -334,8 +337,8 @@ ary2list(ary, enc_flag, self) https://github.com/ruby/ruby/blob/trunk/ext/tk/tkutil/tkutil.c#L337
     /* size = RARRAY_LEN(ary); */
     size = 0;
     for(idx = 0; idx < RARRAY_LEN(ary); idx++) {
-        if (RB_TYPE_P(RARRAY_PTR(ary)[idx], T_HASH)) {
-            size += 2 * RHASH_SIZE(RARRAY_PTR(ary)[idx]);
+        if (RB_TYPE_P(RARRAY_CONST_PTR(ary)[idx], T_HASH)) {
+            size += 2 * RHASH_SIZE(RARRAY_CONST_PTR(ary)[idx]);
         } else {
             size++;
         }
@@ -343,7 +346,7 @@ ary2list(ary, enc_flag, self) https://github.com/ruby/ruby/blob/trunk/ext/tk/tkutil/tkutil.c#L346
 
     dst = rb_ary_new2(size);
     for(idx = 0; idx < RARRAY_LEN(ary); idx++) {
-        val = RARRAY_PTR(ary)[idx];
+        val = RARRAY_CONST_PTR(ary)[idx];
         str_val = Qnil;
         switch(TYPE(val)) {
         case T_ARRAY:
@@ -374,7 +377,7 @@ ary2list(ary, enc_flag, self) https://github.com/ruby/ruby/blob/trunk/ext/tk/tkutil/tkutil.c#L377
             }
             size2 = RARRAY_LEN(val);
             for(idx2 = 0; idx2 < size2; idx2++) {
-                val2 = RARRAY_PTR(val)[idx2];
+                val2 = RARRAY_CONST_PTR(val)[idx2];
                 switch(TYPE(val2)) {
                 case T_ARRAY:
                     str_val = ary2list(val2, enc_flag, self);
@@ -435,7 +438,7 @@ ary2list(ary, enc_flag, self) https://github.com/ruby/ruby/blob/trunk/ext/tk/tkutil/tkutil.c#L438
 
     if (RTEST(dst_enc) && !NIL_P(sys_enc)) {
         for(idx = 0; idx < RARRAY_LEN(dst); idx++) {
-            str_val = RARRAY_PTR(dst)[idx];
+            str_val = RARRAY_CONST_PTR(dst)[idx];
             if (rb_obj_respond_to(self, ID_toUTF8, Qtrue)) {
                 str_val = rb_funcall(self, ID_toUTF8, 1, str_val);
             } else {
@@ -488,7 +491,7 @@ ary2list2(ary, enc_flag, self) https://github.com/ruby/ruby/blob/trunk/ext/tk/tkutil/tkutil.c#L491
     size = RARRAY_LEN(ary);
     dst = rb_ary_new2(size);
     for(idx = 0; idx < RARRAY_LEN(ary); idx++) {
-        val = RARRAY_PTR(ary)[idx];
+        val = RARRAY_CONST_PTR(ary)[idx];
         str_val = Qnil;
         switch(TYPE(val)) {
         case T_ARRAY:
@@ -529,7 +532,7 @@ ary2list2(ary, enc_flag, self) https://github.com/ruby/ruby/blob/trunk/ext/tk/tkutil/tkutil.c#L532
 
     if (RTEST(dst_enc) && !NIL_P(sys_enc)) {
         for(idx = 0; idx < RARRAY_LEN(dst); idx++) {
-            str_val = RARRAY_PTR(dst)[idx];
+            str_val = RARRAY_CONST_PTR(dst)[idx];
             if (rb_obj_respond_to(self, ID_toUTF8, Qtrue)) {
                 str_val = rb_funcall(self, ID_toUTF8, 1, str_val);
             } else {
@@ -571,27 +574,27 @@ assoc2kv(assoc, ary, self) https://github.com/ruby/ruby/blob/trunk/ext/tk/tkutil/tkutil.c#L574
     len = RARRAY_LEN(assoc);
 
     for(i = 0; i < len; i++) {
-        pair = RARRAY_PTR(assoc)[i];
+        pair = RARRAY_CONST_PTR(assoc)[i];
         if (!RB_TYPE_P(pair, T_ARRAY)) {
             rb_ary_push(dst, key2keyname(pair));
             continue;
         }
         switch(RARRAY_LEN(assoc)) {
         case 2:
-            rb_ary_push(dst, RARRAY_PTR(pair)[2]);
+            rb_ary_push(dst, RARRAY_CONST_PTR(pair)[2]);
 
         case 1:
-            rb_ary_push(dst, key2keyname(RARRAY_PTR(pair)[0]));
+            rb_ary_push(dst, key2keyname(RARRAY_CONST_PTR(pair)[0]));
 
         case 0:
             continue;
 
         default:
-            rb_ary_push(dst, key2keyname(RARRAY_PTR(pair)[0]));
+            rb_ary_push(dst, key2keyname(RARRAY_CONST_PTR(pair)[0]));
 
             val = rb_ary_new2(RARRAY_LEN(pair) - 1);
             for(j = 1; j < RARRAY_LEN(pair); j++) {
-                rb_ary_push(val, RARRAY_PTR(pair)[j]);
+                rb_ary_push(val, RARRAY_CONST_PTR(pair)[j]);
             }
 
             rb_ary_push(dst, val);
@@ -619,27 +622,27 @@ assoc2kv_enc(assoc, ary, self) https://github.com/ruby/ruby/blob/trunk/ext/tk/tkutil/tkutil.c#L622
     len = RARRAY_LEN(assoc);
 
     for(i = 0; i < len; i++) {
-        pair = RARRAY_PTR(assoc)[i];
+        pair = RARRAY_CONST_PTR(assoc)[i];
         if (!RB_TYPE_P(pair, T_ARRAY)) {
             rb_ary_push(dst, key2keyname(pair));
             continue;
         }
         switch(RARRAY_LEN(assoc)) {
         case 2:
-            rb_ary_push(dst, get_eval_string_core(RARRAY_PTR(pair)[2], Qtrue, self));
+            rb_ary_push(dst, get_eval_string_core(RARRAY_CONST_PTR(pair)[2], Qtrue, self));
 
         case 1:
-            rb_ary_push(dst, key2keyname(RARRAY_PTR(pair)[0]));
+            rb_ary_push(dst, key2keyname(RARRAY_CONST_PTR(pair)[0]));
 
         case 0:
             continue;
 
         default:
-            rb_ary_push(dst, key2keyname(RARRAY_PTR(pair)[0]));
+            rb_ary_push(dst, key2keyname(RARRAY_CONST_PTR(pair)[0]));
 
             val = rb_ary_new2(RARRAY_LEN(pair) - 1);
             for(j = 1; j < RARRAY_LEN(pair); j++) {
-                rb_ary_push(val, RARRAY_PTR(pair)[j]);
+                rb_ary_push(val, RARRAY_CONST_PTR(pair)[j]);
             }
 
             rb_ary_push(dst, get_eval_string_core(val, Qtrue, self));
@@ -661,7 +664,7 @@ push_kv(key, val, args) https://github.com/ruby/ruby/blob/trunk/ext/tk/tkutil/tkutil.c#L664
 {
     volatile VALUE ary;
 
-    ary = RARRAY_PTR(args)[0];
+    ary = RARRAY_CONST_PTR(args)[0];
 
 #if 0
     rb_ary_push(ary, key2keyname(key));
@@ -671,7 +674,7 @@ push_kv(key, val, args) https://github.com/ruby/ruby/blob/trunk/ext/tk/tkutil/tkutil.c#L674
 
     if (val == TK_None) return ST_CHECK;
 
-    rb_ary_push(ary, get_eval_string_core(val, Qnil, RARRAY_PTR(args)[1]));
+    rb_ary_push(ary, get_eval_string_core(val, Qnil, RARRAY_CONST_PTR(args)[1]));
 
     return ST_CHECK;
 }
@@ -702,20 +705,20 @@ push_kv_enc(key, val, args) https://github.com/ruby/ruby/blob/trunk/ext/tk/tkutil/tkutil.c#L705
 {
     volatile VALUE ary;
 
-    ary = RARRAY_PTR(args)[0];
+    ary = RARRAY_CONST_PTR(args)[0];
 
 #if 0
     rb_ary_push(ary, key2keyname(key));
     if (val != TK_None) {
         rb_ary_push(ary, get_eval_string_core(val, Qtrue,
-                                              RARRAY_PTR(args)[1]));
+                                              RARRAY_CONST_PTR(args)[1]));
     }
 #endif
     rb_ary_push(ary, key2keyname(key));
 
     if (val == TK_None) return ST_CHECK;
 
-    rb_ary_push(ary, get_eval_string_core(val, Qtrue, RARRAY_PTR(args)[1]));
+    rb_ary_push(ary, get_eval_string_core(val, Qtrue, RARRAY_CONST_PTR(args)[1]));
 
     return ST_CHECK;
 }
@@ -1529,6 +1532,7 @@ cbsubst_table_setup(argc, argv, self) https://github.com/ruby/ruby/blob/trunk/ext/tk/tkutil/tkutil.c#L1532
   volatile VALUE longkey_inf;
   volatile VALUE proc_inf;
   VALUE inf;
+  const VALUE *infp;
   ID id;
   struct cbsubst_info *subst_inf;
   long idx, len;
@@ -1559,15 +1563,16 @@ cbsubst_table_setup(argc, argv, self) https://github.com/ruby/ruby/blob/trunk/ext/tk/tkutil/tkutil.c#L1563
    */
   len = RARRAY_LEN(key_inf);
   for(idx = 0; idx < len; idx++) {
-    inf = RARRAY_PTR(key_inf)[idx];
+    inf = RARRAY_CONST_PTR(key_inf)[idx];
     if (!RB_TYPE_P(inf, T_ARRAY)) continue;
+    infp = RARRAY_CONST_PTR(inf);
 
-    chr = NUM2CHR(RARRAY_PTR(inf)[0]);
-    subst_inf->type[chr] = NUM2CHR(RARRAY_PTR(inf)[1]);
+    chr = NUM2CHR(infp[0]);
+    subst_inf->type[chr] = NUM2CHR(infp[1]);
 
     subst_inf->full_subst_length += 3;
 
-    id = SYM2ID(RARRAY_PTR(inf)[2]);
+    id = SYM2ID(infp[2]);
     subst_inf->ivar[chr] = rb_intern_str(rb_sprintf("@%"PRIsVALUE, rb_id2str(id)));
 
     rb_attr(self, id, 1, 0, Qtrue);
@@ -1582,27 +1587,28 @@ cbsubst_table_setup(argc, argv, self) https://github.com/ruby/ruby/blob/trunk/ext/tk/tkutil/tkutil.c#L1587
    */
   len = RARRAY_LEN(longkey_inf);
   for(idx = 0; idx < len; idx++) {
-    inf = RARRAY_PTR(longkey_inf)[idx];
+    inf = RARRAY_CONST_PTR(longkey_inf)[idx];
     if (!RB_TYPE_P(inf, T_ARRAY)) continue;
+    infp = RARRAY_CONST_PTR(inf);
 
     chr = (unsigned char)(0x80 + idx);
-    subst_inf->keylen[chr] = RSTRING_LEN(RARRAY_PTR(inf)[0]);
+    subst_inf->keylen[chr] = RSTRING_LEN(infp[0]);
 #if HAVE_STRNDUP
-    subst_inf->key[chr] = strndup(RSTRING_PTR(RARRAY_PTR(inf)[0]),
-				  RSTRING_LEN(RARRAY_PTR(inf)[0]));
+    subst_inf->key[chr] = strndup(RSTRING_PTR(infp[0]),
+				  RSTRING_LEN(infp[0]));
 #else
-    subst_inf->key[chr] = malloc(RSTRING_LEN(RARRAY_PTR(inf)[0]) + 1);
+    subst_inf->key[chr] = malloc(RSTRING_LEN(infp[0]) + 1);
     if (subst_inf->key[chr]) {
-      strncpy(subst_inf->key[chr], RSTRING_PTR(RARRAY_PTR(inf)[0]),
-	      RSTRING_LEN(RARRAY_PTR(inf)[0]) + 1);
-      subst_inf->key[chr][RSTRING_LEN(RARRAY_PTR(inf)[0])] = '\0';
+      strncpy(subst_inf->key[chr], RSTRING_PTR(infp[0]),
+	      RSTRING_LEN(infp[0]) + 1);
+      subst_inf->key[chr][RSTRING_LEN(infp[0])] = '\0';
     }
 #endif
-    subst_inf->type[chr] = NUM2CHR(RARRAY_PTR(inf)[1]);
+    subst_inf->type[chr] = NUM2CHR(infp[1]);
 
     subst_inf->full_subst_length += (subst_inf->keylen[chr] + 2);
 
-    id = SYM2ID(RARRAY_PTR(inf)[2]);
+    id = SYM2ID(infp[2]);
     subst_inf->ivar[chr] = rb_intern_str(rb_sprintf("@%"PRIsVALUE, rb_id2str(id)));
 
     rb_attr(self, id, 1, 0, Qtrue);
@@ -1616,7 +1622,7 @@ cbsubst_table_setup(argc, argv, self) https://github.com/ruby/ruby/blob/trunk/ext/tk/tkutil/tkutil.c#L1622
   len = RARRAY_LEN(proc_inf);
   for(idx = 0; idx < len; idx++) {
     VALUE type, proc;
-    inf = RARRAY_PTR(proc_inf)[idx];
+    inf = RARRAY_CONST_PTR(proc_inf)[idx];
     if (!RB_TYPE_P(inf, T_ARRAY)) continue;
     if (RARRAY_LEN(inf) < 2) continue;
     type = rb_ary_entry(inf, 0);
@@ -1676,10 +1682,10 @@ cbsubst_scan_args(self, arg_key, val_ary https://github.com/ruby/ruby/blob/trunk/ext/tk/tkutil/tkutil.c#L1682
       }
 
       if (NIL_P(proc)) {
-	rb_ary_push(dst, RARRAY_PTR(val_ary)[idx]);
+	rb_ary_push(dst, RARRAY_CONST_PTR(val_ary)[idx]);
       } else {
 	rb_ary_push(dst, rb_funcall(proc, ID_call, 1,
-				    RARRAY_PTR(val_ary)[idx]));
+				    RARRAY_CONST_PTR(val_ary)[idx]));
       }
     }
 
Index: ext/openssl/ossl_ssl.c
===================================================================
--- ext/openssl/ossl_ssl.c	(revision 52447)
+++ ext/openssl/ossl_ssl.c	(revision 52448)
@@ -759,7 +759,7 @@ ossl_sslctx_setup(VALUE self) https://github.com/ruby/ruby/blob/trunk/ext/openssl/ossl_ssl.c#L759
     if(!NIL_P(val)){
 	if (RB_TYPE_P(val, T_ARRAY)) {
 	    for(i = 0; i < RARRAY_LEN(val); i++){
-		client_ca = GetX509CertPtr(RARRAY_PTR(val)[i]);
+		client_ca = GetX509CertPtr(RARRAY_CONST_PTR(val)[i]);
         	if (!SSL_CTX_add_client_CA(ctx, client_ca)){
 		    /* Copies X509_NAME => FREE it. */
         	    ossl_raise(eSSLError, "SSL_CTX_add_client_CA");
Index: ext/openssl/ossl_ocsp.c
===================================================================
--- ext/openssl/ossl_ocsp. (... truncated)

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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