Main Content

MISRA C++:2008 Rule 19-3-1

The error indicator errno shall not be used

Description

Rule Definition

The error indicator errno shall not be used.

Rationale

Observing this rule encourages the good practice of not relying on errno to check error conditions.

Checking errno is not sufficient to guarantee absence of errors. Functions such as fopen might not set errno on error conditions. Often, you have to check the return value of such functions for error conditions.

Troubleshooting

If you expect a rule violation but Polyspace® does not report it, see Diagnose Why Coding Standard Violations Do Not Appear as Expected.

Examples

expand all

#include <cstdlib>
#include <cerrno>

void func (const char* str) {
    errno = 0;  // Noncompliant
    int i = atoi(str);
    if(errno != 0) { // Noncompliant
        //Handle Error
    }
}

The use of errno violates this rule. The function atoi is not required to set errno if the input string cannot be converted to an integer. Checking errno later does not safeguard against possible failures in conversion.

Check Information

Group: Diagnostic Library
Category: Required

Version History

Introduced in R2013b