xref: /llvm-project/clang/test/Analysis/Inputs/overloaded-delete-in-header.h (revision f4af60dfbb6a2e3d5628b8f07b4895ddbe24d459)
1 #ifndef OVERLOADED_DELETE_IN_HEADER
2 #define OVERLOADED_DELETE_IN_HEADER
3 
4 struct DeleteInHeader {
5   int data;
6   static void operator delete(void *ptr);
7 };
8 
9 void DeleteInHeader::operator delete(void *ptr) {
10   DeleteInHeader *self = (DeleteInHeader *)ptr;
11   self->data = 1; // no-warning: Still alive.
12 
13   ::operator delete(ptr);
14 
15   self->data = 2; // expected-warning {{Use of memory after it is freed [cplusplus.NewDelete]}}
16 }
17 
18 #endif // OVERLOADED_DELETE_IN_SYSTEM_HEADER
19