You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
26 lines
561 B
26 lines
561 B
4 months ago
|
// RUN: %clang_analyze_cc1 -analyzer-checker core,cplusplus -std=c++14 \
|
||
|
// 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'}}
|
||
|
}
|