mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-16 17:26:35 +00:00

The idea behind this heuristic is that normally the visitor is there to inform the user that a certain function may fail to initialize a certain out-parameter. For system header functions this is usually dictated by the contract, and it's unlikely that the header function has accidentally forgot to put the value into the out-parameter; it's more likely that the user has intentionally skipped the error check. Warnings on skipped error checks are more like security warnings; they aren't necessarily useful for all users, and they should instead be introduced on a per-API basis. Differential Revision: https://reviews.llvm.org/D60107 llvm-svn: 357810
23 lines
687 B
C++
23 lines
687 B
C++
// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify %s
|
|
|
|
// expected-no-diagnostics
|
|
|
|
#include "Inputs/no-store-suppression.h"
|
|
|
|
using namespace std;
|
|
|
|
namespace value_uninitialized_after_stream_shift {
|
|
void use(char c);
|
|
|
|
// Technically, it is absolutely necessary to check the status of cin after
|
|
// read before using the value that just read from it. Practically, we don't
|
|
// really care unless we eventually come up with a special security check
|
|
// for just that purpose. Static Analyzer shouldn't be yelling at every person's
|
|
// third program in their C++ 101.
|
|
void foo() {
|
|
char c;
|
|
std::cin >> c;
|
|
use(c); // no-warning
|
|
}
|
|
} // namespace value_uninitialized_after_stream_shift
|