Dead Code
Joel Sherrill
joel.sherrill@oarcorp.com
Wed Mar 15 16:59:00 GMT 2017
On 3/15/2017 11:51 AM, Craig Howland wrote:
> On 03/15/2017 11:48 AM, Joel Sherrill wrote:
>> Hi
>>
>> I think Coverity spotted a case where an || should be an &&
>> in libc/string/strsignal.c. What does everyone else think?
>>
>> 74#if defined(SIGRTMIN) && defined(SIGRTMAX)
>> cond_at_most: Condition signal >= 27, taking false branch. Now the
>> value of signal is at most 26.
>> at_most: At condition signal <= 31, the value of signal must be at most
>> 26.
>> dead_error_condition: The condition signal <= 31 must be true.
>> 75 if ((signal >= SIGRTMIN) || (signal <= SIGRTMAX)) {
>> 76 siprintf (buffer, "Real-time signal %d", signal - SIGRTMIN);
>> 77 return buffer;
>> 78 }
>> 79#endif
>> 80
>>
>> CID 175333 (#1 of 1): Logically dead code (DEADCODE)
>> dead_error_line: Execution cannot reach this statement: switch (signal) {
>>
>> case 1:....
>>
>> --joel
> I agree. (Very easy to test, for that matter.)
I was thinking the same thing about a test and was
writing one while waiting for some feedback. Based
on this output, it is definitely broken!!
=== Normal Signals
signal=SIGHUP => Real-time signal -26
signal=SIGINT => Real-time signal -25
signal=SIGQUIT => Real-time signal -24
signal=SIGILL => Real-time signal -23
It also looks like I wrote this code so I should
take my lashings with a wet noodle. :)
Patch coming shortly.
Thanks for the review. I hope you will join in
and take a look at some of them.
--joel
> Craig
>
More information about the Newlib
mailing list