feature_option: 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-16 15:32:39 +09:00
Родитель 689dd3aecb
Коммит 7cf4625690
1 изменённых файлов: 6 добавлений и 3 удалений

9
ruby.c
Просмотреть файл

@ -911,9 +911,7 @@ feature_option(const char *str, int len, void *arg, const unsigned int enable)
if (NAME_MATCH_P(#bit, str, len)) {set |= mask = FEATURE_BIT(bit); FEATURE_FOUND;} if (NAME_MATCH_P(#bit, str, len)) {set |= mask = FEATURE_BIT(bit); FEATURE_FOUND;}
EACH_FEATURES(SET_FEATURE, ;); EACH_FEATURES(SET_FEATURE, ;);
if (NAME_MATCH_P("all", str, len)) { if (NAME_MATCH_P("all", str, len)) {
found: goto found;
FEATURE_SET_TO(*argp, mask, (mask & enable));
return;
} }
#if AMBIGUOUS_FEATURE_NAMES #if AMBIGUOUS_FEATURE_NAMES
if (matched == 1) goto found; if (matched == 1) goto found;
@ -933,6 +931,11 @@ feature_option(const char *str, int len, void *arg, const unsigned int enable)
rb_warn("unknown argument for --%s: `%.*s'", rb_warn("unknown argument for --%s: `%.*s'",
enable ? "enable" : "disable", len, str); enable ? "enable" : "disable", len, str);
rb_warn("features are [%.*s].", (int)strlen(list), list); rb_warn("features are [%.*s].", (int)strlen(list), list);
return;
found:
FEATURE_SET_TO(*argp, mask, (mask & enable));
return;
} }
static void static void