зеркало из https://github.com/github/ruby.git
str2big_scan_digits: 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:
Родитель
4dfc2f2e3d
Коммит
5a7c0dd038
7
bignum.c
7
bignum.c
|
@ -3771,12 +3771,12 @@ str2big_scan_digits(const char *s, const char *str, int base, int badcheck, size
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (badcheck && *str == '_') goto bad;
|
if (badcheck && *str == '_') return FALSE;
|
||||||
|
|
||||||
while ((c = *str++) != 0) {
|
while ((c = *str++) != 0) {
|
||||||
if (c == '_') {
|
if (c == '_') {
|
||||||
if (nondigit) {
|
if (nondigit) {
|
||||||
if (badcheck) goto bad;
|
if (badcheck) return FALSE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
nondigit = (char) c;
|
nondigit = (char) c;
|
||||||
|
@ -3791,7 +3791,7 @@ str2big_scan_digits(const char *s, const char *str, int base, int badcheck, size
|
||||||
}
|
}
|
||||||
if (len > 0 && !--len) break;
|
if (len > 0 && !--len) break;
|
||||||
}
|
}
|
||||||
if (badcheck && nondigit) goto bad;
|
if (badcheck && nondigit) return FALSE;
|
||||||
if (badcheck && len) {
|
if (badcheck && len) {
|
||||||
str--;
|
str--;
|
||||||
while (*str && ISSPACE(*str)) {
|
while (*str && ISSPACE(*str)) {
|
||||||
|
@ -3799,7 +3799,6 @@ str2big_scan_digits(const char *s, const char *str, int base, int badcheck, size
|
||||||
if (len > 0 && !--len) break;
|
if (len > 0 && !--len) break;
|
||||||
}
|
}
|
||||||
if (len && *str) {
|
if (len && *str) {
|
||||||
bad:
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче