blob: 8d01160d1d4b846380367def8a3865f8011fdf9a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
#include <mozilla/RefPtr.h>
#define MOZ_KNOWN_LIVE __attribute__((annotate("moz_known_live")))
class Foo {
// dummy refcounting
public:
uint32_t AddRef() { return 0; }
uint32_t Release() { return 0; }
private:
~Foo() = default;
};
class Bar {
MOZ_KNOWN_LIVE RefPtr<Foo> mFoo;
Bar() : mFoo(new Foo()) {}
~Bar() { mFoo = nullptr; }
void Baz() {
mFoo = nullptr; // expected-error {{MOZ_KNOWN_LIVE members can only be modified by constructors and destructors}}
}
};
class Bar2 {
MOZ_KNOWN_LIVE Foo *mFoo;
Bar2() : mFoo(new Foo()) {}
~Bar2() { mFoo = nullptr; }
void Baz() {
mFoo = nullptr; // expected-error {{MOZ_KNOWN_LIVE members can only be modified by constructors and destructors}}
}
};
|