Is CERT C FIO34-C really NOT covered by MISRA rules as stated in MISRA C:2012 Addendum 3

Questions and discussions about MISRA C not fitting under migration or rules forums

Moderators: misra-c, david ward

alexporto
Posts: 1
Joined: Wed Feb 27, 2019 1:39 pm
Company: Embraer

Is CERT C FIO34-C really NOT covered by MISRA rules as stated in MISRA C:2012 Addendum 3

Postby alexporto » Thu Feb 28, 2019 10:55 am

The document MISRA:C Addendum 3 classifies the CERT C rule FIO34-C as NOT COVERED by MISRA (Coverage is None/None)

However, the condition detailed in this rule FIO34-C seems to be fully covered by MISRA rule 22.7

FIO34-C: Distinguish between characters read from a file and EOF or WEOF
MISRA C:2012 Amendment 1, Rule 22.7: The macro EOF shall only be compared with the unmodified return value from any Standard Library function capable of returning EOF

Is that correct?

misra-c
Posts: 547
Joined: Thu Jan 05, 2006 1:11 pm

Re: Is CERT C FIO34-C really NOT covered by MISRA rules as stated in MISRA C:2012 Addendum 3

Postby misra-c » Thu Jun 13, 2019 4:15 pm

Both rules address the issue that a value returned by getchar ( and similar functions ) may be indistinguishable from EOF. However they cover different situations.

The description and examples of FIO34-C show that is concerned with the situation when int and char have the same size.
Rule 22.7 is concerned with situations where the return value undergoes a type conversion if that value is then compared to EOF.

The following example is non-compliant with FIO34-C, but compliant with rule 22.7 as no type conversions occur.

Code: Select all

  int c;
  do {
    c = getchar();
  } while (c != EOF);
---
Posted by and on behalf of
the MISRA C Working Group


Return to “General Questions”

Who is online

Users browsing this forum: No registered users and 0 guests