mruby-array-ext: avoid goto in ary_slice_bang

This commit is contained in:
Yukihiro "Matz" Matsumoto
2025-11-09 22:05:20 +09:00
parent 00377b7ee6
commit 150a8db053
+8 -6
View File
@@ -201,16 +201,18 @@ ary_slice_bang(mrb_state *mrb, mrb_value self)
mrb_value index = mrb_get_arg1(mrb);
if (mrb_type(index) == MRB_TT_RANGE) {
if (mrb_range_beg_len(mrb, index, &i, &len, ARY_LEN(a), TRUE) == MRB_RANGE_OK) {
goto delete_pos_len;
if (mrb_range_beg_len(mrb, index, &i, &len, ARY_LEN(a), TRUE) != MRB_RANGE_OK) {
return mrb_nil_value();
}
return mrb_nil_value();
}
return mrb_ary_delete_at(mrb, self);
else {
return mrb_ary_delete_at(mrb, self);
}
}
else {
mrb_get_args(mrb, "ii", &i, &len);
}
mrb_get_args(mrb, "ii", &i, &len);
delete_pos_len:;
mrb_int alen = ARY_LEN(a);
if (i < 0) i += alen;
if (i < 0 || alen < i) return mrb_nil_value();