signm2signo: 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:
parent
7cf4625690
commit
224e9c3835
Notes:
git
2020-06-29 11:06:51 +09:00
27
signal.c
27
signal.c
@ -243,6 +243,20 @@ signm2signo(VALUE *sig_ptr, int negative, int exit, int *prefix_ptr)
|
|||||||
prefix += signame_prefix_len;
|
prefix += signame_prefix_len;
|
||||||
}
|
}
|
||||||
if (len <= (long)prefix) {
|
if (len <= (long)prefix) {
|
||||||
|
goto unsupported;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (prefix_ptr) *prefix_ptr = prefix;
|
||||||
|
nmlen = len - prefix;
|
||||||
|
nm += prefix;
|
||||||
|
if (nmlen > LONGEST_SIGNAME) goto unsupported;
|
||||||
|
FOREACH_SIGNAL(sigs, !exit) {
|
||||||
|
if (memcmp(sigs->signm, nm, nmlen) == 0 &&
|
||||||
|
sigs->signm[nmlen] == '\0') {
|
||||||
|
return negative ? -sigs->signo : sigs->signo;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
unsupported:
|
unsupported:
|
||||||
if (prefix == signame_prefix_len) {
|
if (prefix == signame_prefix_len) {
|
||||||
prefix = 0;
|
prefix = 0;
|
||||||
@ -262,19 +276,6 @@ signm2signo(VALUE *sig_ptr, int negative, int exit, int *prefix_ptr)
|
|||||||
prefix, signame_prefix, vsig);
|
prefix, signame_prefix, vsig);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (prefix_ptr) *prefix_ptr = prefix;
|
|
||||||
nmlen = len - prefix;
|
|
||||||
nm += prefix;
|
|
||||||
if (nmlen > LONGEST_SIGNAME) goto unsupported;
|
|
||||||
FOREACH_SIGNAL(sigs, !exit) {
|
|
||||||
if (memcmp(sigs->signm, nm, nmlen) == 0 &&
|
|
||||||
sigs->signm[nmlen] == '\0') {
|
|
||||||
return negative ? -sigs->signo : sigs->signo;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
goto unsupported;
|
|
||||||
}
|
|
||||||
|
|
||||||
static const char*
|
static const char*
|
||||||
signo2signm(int no)
|
signo2signm(int no)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user