mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
parent
3ff53c8e04
commit
5b21e94beb
Notes:
git
2022-07-22 01:42:33 +09:00
158 changed files with 38285 additions and 37251 deletions
|
@ -35,22 +35,22 @@ bug_str_qsort_bang(int argc, VALUE *argv, VALUE str)
|
|||
rb_scan_args(argc, argv, "03", &beg, &len, &size);
|
||||
l = RSTRING_LEN(str);
|
||||
if (!NIL_P(beg) && (b = NUM2INT(beg)) < 0 && (b += l) < 0) {
|
||||
rb_raise(rb_eArgError, "out of bounds");
|
||||
rb_raise(rb_eArgError, "out of bounds");
|
||||
}
|
||||
if (!NIL_P(size) && (s = NUM2INT(size)) < 0) {
|
||||
rb_raise(rb_eArgError, "negative size");
|
||||
rb_raise(rb_eArgError, "negative size");
|
||||
}
|
||||
if (NIL_P(len) ||
|
||||
(((n = NUM2INT(len)) < 0) ?
|
||||
(rb_raise(rb_eArgError, "negative length"), 0) :
|
||||
(b + n * s > l))) {
|
||||
n = (l - b) / s;
|
||||
(((n = NUM2INT(len)) < 0) ?
|
||||
(rb_raise(rb_eArgError, "negative length"), 0) :
|
||||
(b + n * s > l))) {
|
||||
n = (l - b) / s;
|
||||
}
|
||||
rb_str_modify(str);
|
||||
d.enc = rb_enc_get(str);
|
||||
d.elsize = s;
|
||||
ruby_qsort(RSTRING_PTR(str) + b, n, s,
|
||||
rb_block_given_p() ? cmp_1 : cmp_2, &d);
|
||||
rb_block_given_p() ? cmp_1 : cmp_2, &d);
|
||||
return str;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue