static void range_init(VALUE range, VALUE beg, VALUE end, int exclude_end) { VALUE args[2]; args[0] = beg; args[1] = end; if (!FIXNUM_P(beg) || !FIXNUM_P(end)) { VALUE v; v = rb_rescue(range_check, (VALUE)args, range_failed, 0); if (NIL_P(v)) range_failed(); } SET_EXCL(range, exclude_end); GC_WB(&RANGE_BEG(range), beg); GC_WB(&RANGE_END(range), end); }
static void range_init(VALUE range, VALUE beg, VALUE end, int exclude_end) { VALUE args[2]; args[0] = beg; args[1] = end; if (!FIXNUM_P(beg) || !FIXNUM_P(end)) { VALUE v; v = rb_rescue(range_check, (VALUE)args, range_failed, 0); if (NIL_P(v)) range_failed(); } SET_EXCL(range, exclude_end); RSTRUCT(range)->as.ary[0] = beg; RSTRUCT(range)->as.ary[1] = end; }