forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			26 lines
		
	
	
		
			561 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			26 lines
		
	
	
		
			561 B
		
	
	
	
		
			C++
		
	
	
	
| // 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'}}
 | |
| }
 |