# V1024. Potential use of invalid data. The stream is checked for EOF before reading from it but is not checked after reading.

Анализатор обнаружил возможное использование некорректных данных при их чтении.

Пример неправильного кода:

    while (!in.eof()) {
      in >> x;
      foo(x);
    }

В случае, если операция чтения закончится неудачей, переменная 'x' будет содержать некорректные данные. При этом функция 'foo' всё равно будет вызвана. Необходимо либо добавить ещё одну проверку перед использованием переменной 'x', либо переписать цикл так, как показано дальше.

Корректный код:

    while (in >> x) {
      foo(x);
    }

Дополнительные ссылки:

- C++ Antipatterns. См. раздел: Testing for istream.eof() in a loop.
- Stackexchange.com. Why does ifstream.eof() not return TRUE after reading the last line of a file?

Данная диагностика классифицируется как:

CWE-20 CERT-FIO40-C