diff --git a/AK/NonnullRefPtr.h b/AK/NonnullRefPtr.h index fcb4bc245a4..812457a01ad 100644 --- a/AK/NonnullRefPtr.h +++ b/AK/NonnullRefPtr.h @@ -148,14 +148,12 @@ public: return *this; } - CALLABLE_WHEN(unconsumed) + [[nodiscard]] CALLABLE_WHEN(unconsumed) SET_TYPESTATE(consumed) T& leak_ref() { ASSERT(m_ptr); - T* leakedPtr = m_ptr; - m_ptr = nullptr; - return *leakedPtr; + return *exchange(m_ptr, nullptr); } CALLABLE_WHEN("unconsumed","unknown") diff --git a/AK/RefPtr.h b/AK/RefPtr.h index d698cfa261a..5fe7a315364 100644 --- a/AK/RefPtr.h +++ b/AK/RefPtr.h @@ -188,11 +188,9 @@ public: bool operator!() const { return !m_ptr; } - T* leak_ref() + [[nodiscard]] T* leak_ref() { - T* leakedPtr = m_ptr; - m_ptr = nullptr; - return leakedPtr; + return exchange(m_ptr, nullptr); } T* ptr() { return m_ptr; }