aboutsummaryrefslogtreecommitdiff
path: root/clang/test/Analysis/Inputs/overloaded-delete-in-header.h
blob: 96aa4af672f50908e7d24fc291491ca028b9d9c2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#ifndef OVERLOADED_DELETE_IN_HEADER
#define OVERLOADED_DELETE_IN_HEADER

struct DeleteInHeader {
  int data;
  static void operator delete(void *ptr);
};

void DeleteInHeader::operator delete(void *ptr) {
  DeleteInHeader *self = (DeleteInHeader *)ptr;
  self->data = 1; // no-warning: Still alive.

  ::operator delete(ptr);

  self->data = 2; // expected-warning {{Use of memory after it is released [cplusplus.NewDelete]}}
}

#endif // OVERLOADED_DELETE_IN_SYSTEM_HEADER