Avoid weak vtables by providing a private virtual member function
This commit is contained in:
parent
2730e90186
commit
88430d7837
@ -127,8 +127,13 @@ TEST(BufferTest, Ctor) {
|
|||||||
struct dying_buffer : test_buffer<int> {
|
struct dying_buffer : test_buffer<int> {
|
||||||
MOCK_METHOD0(die, void());
|
MOCK_METHOD0(die, void());
|
||||||
~dying_buffer() { die(); }
|
~dying_buffer() { die(); }
|
||||||
|
|
||||||
|
private:
|
||||||
|
virtual void avoid_weak_vtable();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void dying_buffer::avoid_weak_vtable() {}
|
||||||
|
|
||||||
TEST(BufferTest, VirtualDtor) {
|
TEST(BufferTest, VirtualDtor) {
|
||||||
typedef StrictMock<dying_buffer> stict_mock_buffer;
|
typedef StrictMock<dying_buffer> stict_mock_buffer;
|
||||||
stict_mock_buffer* mock_buffer = new stict_mock_buffer();
|
stict_mock_buffer* mock_buffer = new stict_mock_buffer();
|
||||||
|
|||||||
@ -14,8 +14,13 @@
|
|||||||
class assertion_failure : public std::logic_error {
|
class assertion_failure : public std::logic_error {
|
||||||
public:
|
public:
|
||||||
explicit assertion_failure(const char* message) : std::logic_error(message) {}
|
explicit assertion_failure(const char* message) : std::logic_error(message) {}
|
||||||
|
|
||||||
|
private:
|
||||||
|
virtual void avoid_weak_vtable();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void assertion_failure::avoid_weak_vtable() {}
|
||||||
|
|
||||||
#define FMT_ASSERT(condition, message) \
|
#define FMT_ASSERT(condition, message) \
|
||||||
if (!(condition)) throw assertion_failure(message);
|
if (!(condition)) throw assertion_failure(message);
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user