Explorar o código

AK: Hoist the assertion in Retainable::release() to RetainableBase.

This means we don't have to generate a __PRETTY_FUNCTION__ symbol there
for each and every specialization.
Andreas Kling %!s(int64=6) %!d(string=hai) anos
pai
achega
dd5ca1940a
Modificáronse 1 ficheiros con 7 adicións e 2 borrados
  1. 7 2
      AK/Retainable.h

+ 7 - 2
AK/Retainable.h

@@ -49,6 +49,12 @@ protected:
         ASSERT(!m_retain_count);
     }
 
+    void release_base()
+    {
+        ASSERT(m_retain_count);
+        --m_retain_count;
+    }
+
     int m_retain_count { 1 };
 };
 
@@ -57,8 +63,7 @@ class Retainable : public RetainableBase {
 public:
     void release()
     {
-        ASSERT(m_retain_count);
-        --m_retain_count;
+        release_base();
         if (m_retain_count == 0) {
             call_will_be_destroyed_if_present(static_cast<T*>(this));
             delete static_cast<T*>(this);