ruby-changes:29170
From: eregon <ko1@a...>
Date: Tue, 11 Jun 2013 05:07:04 +0900 (JST)
Subject: [ruby-changes:29170] eregon:r41222 (trunk): * ext/racc/cparse/cparse.c: use rb_ary_entry() and
eregon 2013-06-11 05:06:53 +0900 (Tue, 11 Jun 2013) New Revision: 41222 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=41222 Log: * ext/racc/cparse/cparse.c: use rb_ary_entry() and rb_ary_subseq() instead of RARRAY_PTR. Based on a patch by Dirkjan Bussink. See Bug #8399. Modified files: trunk/ChangeLog trunk/ext/racc/cparse/cparse.c Index: ChangeLog =================================================================== --- ChangeLog (revision 41221) +++ ChangeLog (revision 41222) @@ -1,3 +1,9 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1 +Tue Jun 11 05:04:25 2013 Benoit Daloze <eregontp@g...> + + * ext/racc/cparse/cparse.c: use rb_ary_entry() and + rb_ary_subseq() instead of RARRAY_PTR. + Based on a patch by Dirkjan Bussink. See Bug #8399. + Mon Jun 10 23:51:51 2013 Kazuhiro NISHIYAMA <zn@m...> * array.c (rb_ary_new_from_values): fix a typo. pointed out by Index: ext/racc/cparse/cparse.c =================================================================== --- ext/racc/cparse/cparse.c (revision 41221) +++ ext/racc/cparse/cparse.c (revision 41222) @@ -91,7 +91,7 @@ num_to_long(VALUE n) https://github.com/ruby/ruby/blob/trunk/ext/racc/cparse/cparse.c#L91 } #define AREF(s, idx) \ - ((0 <= idx && idx < RARRAY_LEN(s)) ? RARRAY_PTR(s)[idx] : Qnil) + ((0 <= idx && idx < RARRAY_LEN(s)) ? rb_ary_entry(s, idx) : Qnil) /* ----------------------------------------------------------------------- Parser Stack Interfaces @@ -105,7 +105,7 @@ get_stack_tail(VALUE stack, long len) https://github.com/ruby/ruby/blob/trunk/ext/racc/cparse/cparse.c#L105 { if (len < 0) return Qnil; /* system error */ if (len > RARRAY_LEN(stack)) len = RARRAY_LEN(stack); - return rb_ary_new4(len, RARRAY_PTR(stack) + RARRAY_LEN(stack) - len); + return rb_ary_subseq(stack, RARRAY_LEN(stack) - len, len); } static void @@ -122,7 +122,7 @@ cut_stack_tail(VALUE stack, long len) https://github.com/ruby/ruby/blob/trunk/ext/racc/cparse/cparse.c#L122 #define PUSH(s, i) rb_ary_store(s, RARRAY_LEN(s), i) #define POP(s) rb_ary_pop(s) #define LAST_I(s) \ - ((RARRAY_LEN(s) > 0) ? RARRAY_PTR(s)[RARRAY_LEN(s) - 1] : Qnil) + ((RARRAY_LEN(s) > 0) ? rb_ary_entry(s, RARRAY_LEN(s) - 1) : Qnil) #define GET_TAIL(s, len) get_stack_tail(s, len) #define CUT_TAIL(s, len) cut_stack_tail(s, len) @@ -334,21 +334,21 @@ initialize_params(VALUE vparams, VALUE p https://github.com/ruby/ruby/blob/trunk/ext/racc/cparse/cparse.c#L334 Check_Type(arg, T_ARRAY); if (!(13 <= RARRAY_LEN(arg) && RARRAY_LEN(arg) <= 14)) rb_raise(RaccBug, "[Racc Bug] wrong arg.size %ld", RARRAY_LEN(arg)); - v->action_table = assert_array (RARRAY_PTR(arg)[ 0]); - v->action_check = assert_array (RARRAY_PTR(arg)[ 1]); - v->action_default = assert_array (RARRAY_PTR(arg)[ 2]); - v->action_pointer = assert_array (RARRAY_PTR(arg)[ 3]); - v->goto_table = assert_array (RARRAY_PTR(arg)[ 4]); - v->goto_check = assert_array (RARRAY_PTR(arg)[ 5]); - v->goto_default = assert_array (RARRAY_PTR(arg)[ 6]); - v->goto_pointer = assert_array (RARRAY_PTR(arg)[ 7]); - v->nt_base = assert_integer(RARRAY_PTR(arg)[ 8]); - v->reduce_table = assert_array (RARRAY_PTR(arg)[ 9]); - v->token_table = assert_hash (RARRAY_PTR(arg)[10]); - v->shift_n = assert_integer(RARRAY_PTR(arg)[11]); - v->reduce_n = assert_integer(RARRAY_PTR(arg)[12]); + v->action_table = assert_array (rb_ary_entry(arg, 0)); + v->action_check = assert_array (rb_ary_entry(arg, 1)); + v->action_default = assert_array (rb_ary_entry(arg, 2)); + v->action_pointer = assert_array (rb_ary_entry(arg, 3)); + v->goto_table = assert_array (rb_ary_entry(arg, 4)); + v->goto_check = assert_array (rb_ary_entry(arg, 5)); + v->goto_default = assert_array (rb_ary_entry(arg, 6)); + v->goto_pointer = assert_array (rb_ary_entry(arg, 7)); + v->nt_base = assert_integer(rb_ary_entry(arg, 8)); + v->reduce_table = assert_array (rb_ary_entry(arg, 9)); + v->token_table = assert_hash (rb_ary_entry(arg, 10)); + v->shift_n = assert_integer(rb_ary_entry(arg, 11)); + v->reduce_n = assert_integer(rb_ary_entry(arg, 12)); if (RARRAY_LEN(arg) > 13) { - v->use_result_var = RTEST(RARRAY_PTR(arg)[13]); + v->use_result_var = RTEST(rb_ary_entry(arg, 13)); } else { v->use_result_var = TRUE; @@ -564,7 +564,7 @@ parse_main(struct cparse_params *v, VALU https://github.com/ruby/ruby/blob/trunk/ext/racc/cparse/cparse.c#L564 accept: if (v->debug) rb_funcall(v->parser, id_d_accept, 0); - v->retval = RARRAY_PTR(v->vstack)[0]; + v->retval = rb_ary_entry(v->vstack, 0); v->fin = CP_FIN_ACCEPT; return; @@ -693,9 +693,9 @@ reduce0(VALUE val, VALUE data, VALUE sel https://github.com/ruby/ruby/blob/trunk/ext/racc/cparse/cparse.c#L693 VALUE goto_state; Data_Get_Struct(data, struct cparse_params, v); - reduce_len = RARRAY_PTR(v->reduce_table)[v->ruleno]; - reduce_to = RARRAY_PTR(v->reduce_table)[v->ruleno+1]; - method_id = RARRAY_PTR(v->reduce_table)[v->ruleno+2]; + reduce_len = rb_ary_entry(v->reduce_table, v->ruleno); + reduce_to = rb_ary_entry(v->reduce_table, v->ruleno+1); + method_id = rb_ary_entry(v->reduce_table, v->ruleno+2); len = NUM2LONG(reduce_len); mid = value_to_id(method_id); @@ -710,10 +710,10 @@ reduce0(VALUE val, VALUE data, VALUE sel https://github.com/ruby/ruby/blob/trunk/ext/racc/cparse/cparse.c#L710 else { if (mid != id_noreduce) { tmp_v = GET_TAIL(v->vstack, len); - tmp = RARRAY_PTR(tmp_v)[0]; + tmp = rb_ary_entry(tmp_v, 0); } else { - tmp = RARRAY_PTR(v->vstack)[ RARRAY_LEN(v->vstack) - len ]; + tmp = rb_ary_entry(v->vstack, RARRAY_LEN(v->vstack) - len); } CUT_TAIL(v->vstack, len); if (v->debug) { -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/