Skip to content

Commit 9158572

Browse files
committed
Merge pull request #26 from eregon/1-4-stable
use rb_ary_entry() and rb_ary_subseq() instead of RARRAY_PTR
2 parents 5c53f20 + c43068f commit 9158572

File tree

1 file changed

+23
-23
lines changed

1 file changed

+23
-23
lines changed

ext/racc/cparse.c

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ num_to_long(VALUE n)
8484
}
8585

8686
#define AREF(s, idx) \
87-
((0 <= idx && idx < RARRAY_LEN(s)) ? RARRAY_PTR(s)[idx] : Qnil)
87+
((0 <= idx && idx < RARRAY_LEN(s)) ? rb_ary_entry(s, idx) : Qnil)
8888

8989
/* -----------------------------------------------------------------------
9090
Parser Stack Interfaces
@@ -98,7 +98,7 @@ get_stack_tail(VALUE stack, long len)
9898
{
9999
if (len < 0) return Qnil; /* system error */
100100
if (len > RARRAY_LEN(stack)) len = RARRAY_LEN(stack);
101-
return rb_ary_new4(len, RARRAY_PTR(stack) + RARRAY_LEN(stack) - len);
101+
return rb_ary_subseq(stack, RARRAY_LEN(stack) - len, len);
102102
}
103103

104104
static void
@@ -115,7 +115,7 @@ cut_stack_tail(VALUE stack, long len)
115115
#define PUSH(s, i) rb_ary_store(s, RARRAY_LEN(s), i)
116116
#define POP(s) rb_ary_pop(s)
117117
#define LAST_I(s) \
118-
((RARRAY_LEN(s) > 0) ? RARRAY_PTR(s)[RARRAY_LEN(s) - 1] : Qnil)
118+
((RARRAY_LEN(s) > 0) ? rb_ary_entry(s, RARRAY_LEN(s) - 1) : Qnil)
119119
#define GET_TAIL(s, len) get_stack_tail(s, len)
120120
#define CUT_TAIL(s, len) cut_stack_tail(s, len)
121121

@@ -327,21 +327,21 @@ initialize_params(VALUE vparams, VALUE parser, VALUE arg, VALUE lexer, VALUE lex
327327
Check_Type(arg, T_ARRAY);
328328
if (!(13 <= RARRAY_LEN(arg) && RARRAY_LEN(arg) <= 14))
329329
rb_raise(RaccBug, "[Racc Bug] wrong arg.size %ld", RARRAY_LEN(arg));
330-
v->action_table = assert_array (RARRAY_PTR(arg)[ 0]);
331-
v->action_check = assert_array (RARRAY_PTR(arg)[ 1]);
332-
v->action_default = assert_array (RARRAY_PTR(arg)[ 2]);
333-
v->action_pointer = assert_array (RARRAY_PTR(arg)[ 3]);
334-
v->goto_table = assert_array (RARRAY_PTR(arg)[ 4]);
335-
v->goto_check = assert_array (RARRAY_PTR(arg)[ 5]);
336-
v->goto_default = assert_array (RARRAY_PTR(arg)[ 6]);
337-
v->goto_pointer = assert_array (RARRAY_PTR(arg)[ 7]);
338-
v->nt_base = assert_integer(RARRAY_PTR(arg)[ 8]);
339-
v->reduce_table = assert_array (RARRAY_PTR(arg)[ 9]);
340-
v->token_table = assert_hash (RARRAY_PTR(arg)[10]);
341-
v->shift_n = assert_integer(RARRAY_PTR(arg)[11]);
342-
v->reduce_n = assert_integer(RARRAY_PTR(arg)[12]);
330+
v->action_table = assert_array (rb_ary_entry(arg, 0));
331+
v->action_check = assert_array (rb_ary_entry(arg, 1));
332+
v->action_default = assert_array (rb_ary_entry(arg, 2));
333+
v->action_pointer = assert_array (rb_ary_entry(arg, 3));
334+
v->goto_table = assert_array (rb_ary_entry(arg, 4));
335+
v->goto_check = assert_array (rb_ary_entry(arg, 5));
336+
v->goto_default = assert_array (rb_ary_entry(arg, 6));
337+
v->goto_pointer = assert_array (rb_ary_entry(arg, 7));
338+
v->nt_base = assert_integer(rb_ary_entry(arg, 8));
339+
v->reduce_table = assert_array (rb_ary_entry(arg, 9));
340+
v->token_table = assert_hash (rb_ary_entry(arg, 10));
341+
v->shift_n = assert_integer(rb_ary_entry(arg, 11));
342+
v->reduce_n = assert_integer(rb_ary_entry(arg, 12));
343343
if (RARRAY_LEN(arg) > 13) {
344-
v->use_result_var = RTEST(RARRAY_PTR(arg)[13]);
344+
v->use_result_var = RTEST(rb_ary_entry(arg, 13));
345345
}
346346
else {
347347
v->use_result_var = Qtrue;
@@ -557,7 +557,7 @@ parse_main(struct cparse_params *v, VALUE tok, VALUE val, int resume)
557557

558558
accept:
559559
if (v->debug) rb_funcall(v->parser, id_d_accept, 0);
560-
v->retval = RARRAY_PTR(v->vstack)[0];
560+
v->retval = rb_ary_entry(v->vstack, 0);
561561
v->fin = CP_FIN_ACCEPT;
562562
return;
563563

@@ -686,9 +686,9 @@ reduce0(VALUE val, VALUE data, VALUE self)
686686
VALUE goto_state;
687687

688688
Data_Get_Struct(data, struct cparse_params, v);
689-
reduce_len = RARRAY_PTR(v->reduce_table)[v->ruleno];
690-
reduce_to = RARRAY_PTR(v->reduce_table)[v->ruleno+1];
691-
method_id = RARRAY_PTR(v->reduce_table)[v->ruleno+2];
689+
reduce_len = rb_ary_entry(v->reduce_table, v->ruleno);
690+
reduce_to = rb_ary_entry(v->reduce_table, v->ruleno+1);
691+
method_id = rb_ary_entry(v->reduce_table, v->ruleno+2);
692692
len = NUM2LONG(reduce_len);
693693
mid = value_to_id(method_id);
694694

@@ -703,10 +703,10 @@ reduce0(VALUE val, VALUE data, VALUE self)
703703
else {
704704
if (mid != id_noreduce) {
705705
tmp_v = GET_TAIL(v->vstack, len);
706-
tmp = RARRAY_PTR(tmp_v)[0];
706+
tmp = rb_ary_entry(tmp_v, 0);
707707
}
708708
else {
709-
tmp = RARRAY_PTR(v->vstack)[ RARRAY_LEN(v->vstack) - len ];
709+
tmp = rb_ary_entry(v->vstack, RARRAY_LEN(v->vstack) - len);
710710
}
711711
CUT_TAIL(v->vstack, len);
712712
if (v->debug) {

0 commit comments

Comments
 (0)