From 88430d783779b14a3bcc54b9abfbdcab2718d38d Mon Sep 17 00:00:00 2001 From: Deniz Evrenci Date: Thu, 10 Oct 2019 23:42:02 +0900 Subject: [PATCH] Avoid weak vtables by providing a private virtual member function --- test/core-test.cc | 5 +++++ test/test-assert.h | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/test/core-test.cc b/test/core-test.cc index 76612b99..931f44b7 100644 --- a/test/core-test.cc +++ b/test/core-test.cc @@ -127,8 +127,13 @@ TEST(BufferTest, Ctor) { struct dying_buffer : test_buffer { MOCK_METHOD0(die, void()); ~dying_buffer() { die(); } + + private: + virtual void avoid_weak_vtable(); }; +void dying_buffer::avoid_weak_vtable() {} + TEST(BufferTest, VirtualDtor) { typedef StrictMock stict_mock_buffer; stict_mock_buffer* mock_buffer = new stict_mock_buffer(); diff --git a/test/test-assert.h b/test/test-assert.h index 034a4ce6..c02dc0f2 100644 --- a/test/test-assert.h +++ b/test/test-assert.h @@ -14,8 +14,13 @@ class assertion_failure : public std::logic_error { public: 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) \ if (!(condition)) throw assertion_failure(message);