diff options
Diffstat (limited to 'array.c')
-rw-r--r-- | array.c | 12 |
1 files changed, 9 insertions, 3 deletions
@@ -2175,9 +2175,9 @@ rb_ary_slice_bang(int argc, VALUE *argv, VALUE ary) long pos, len, orig_len; rb_ary_modify_check(ary); - if (rb_scan_args(argc, argv, "11", &arg1, &arg2) == 2) { - pos = NUM2LONG(arg1); - len = NUM2LONG(arg2); + if (argc == 2) { + pos = NUM2LONG(argv[0]); + len = NUM2LONG(argv[1]); delete_pos_len: if (len < 0) return Qnil; orig_len = RARRAY_LEN(ary); @@ -2196,6 +2196,12 @@ rb_ary_slice_bang(int argc, VALUE *argv, VALUE ary) return arg2; } + if (argc != 1) { + /* error report */ + rb_scan_args(argc, argv, "11", NULL, NULL); + } + arg1 = argv[0]; + if (!FIXNUM_P(arg1)) { switch (rb_range_beg_len(arg1, &pos, &len, RARRAY_LEN(ary), 0)) { case Qtrue: |