rb_str_update: do not goto into a branch

I'm not necessarily against every goto in general, but jumping into a
branch is definitely a bad idea.  Better refactor.
This commit is contained in:
卜部昌平 2020-06-18 10:29:25 +09:00
parent d49924ed81
commit 0358846f8c
Notes: git 2020-06-29 11:06:48 +09:00

View File

@ -4729,14 +4729,10 @@ rb_str_update(VALUE str, long beg, long len, VALUE val)
enc = rb_enc_check(str, val); enc = rb_enc_check(str, val);
slen = str_strlen(str, enc); /* rb_enc_check */ slen = str_strlen(str, enc); /* rb_enc_check */
if (slen < beg) { if ((slen < beg) || ((beg < 0) && (beg + slen < 0))) {
out_of_range:
rb_raise(rb_eIndexError, "index %ld out of string", beg); rb_raise(rb_eIndexError, "index %ld out of string", beg);
} }
if (beg < 0) { if (beg < 0) {
if (beg + slen < 0) {
goto out_of_range;
}
beg += slen; beg += slen;
} }
assert(beg >= 0); assert(beg >= 0);