forked from OSchip/llvm-project
26 lines
550 B
C++
26 lines
550 B
C++
// RUN: %clang_analyze_cc1 -analyzer-checker core,cplusplus \
|
|
// RUN: -analyzer-checker debug.ExprInspection -verify %s
|
|
|
|
void clang_analyzer_eval(bool);
|
|
|
|
struct A {
|
|
int x;
|
|
};
|
|
|
|
A getA();
|
|
|
|
struct B {
|
|
int *p;
|
|
A a;
|
|
|
|
B(int *p) : p(p), a(getA()) {}
|
|
};
|
|
|
|
void foo() {
|
|
B b1(nullptr);
|
|
clang_analyzer_eval(b1.p == nullptr); // expected-warning{{TRUE}}
|
|
B b2(new int); // No leak yet!
|
|
clang_analyzer_eval(b2.p == nullptr); // expected-warning{{FALSE}}
|
|
// expected-warning@-1{{Potential leak of memory pointed to by 'b2.p'}}
|
|
}
|