From ae747cdd7d7edc1518d1ee35eb104156f2d0786e Mon Sep 17 00:00:00 2001 From: Weiqun Zhang Date: Thu, 21 Mar 2024 07:34:26 -0700 Subject: [PATCH] Fix a memory leak in TableData::operator= (#3807) X-Ref: https://github.com/ECP-WarpX/WarpX/pull/4779 --- Src/Base/AMReX_TableData.H | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/Src/Base/AMReX_TableData.H b/Src/Base/AMReX_TableData.H index 9d0db5bd8d1..aa310c26fc0 100644 --- a/Src/Base/AMReX_TableData.H +++ b/Src/Base/AMReX_TableData.H @@ -401,14 +401,17 @@ template TableData& TableData::operator= (TableData && rhs) noexcept { - m_arena = rhs.m_arena; - m_dptr = rhs.m_dptr; - m_lo = rhs.m_lo; - m_hi = rhs.m_hi; - m_truesize = rhs.m_truesize; - m_ptr_owner = rhs.m_ptr_owner; - rhs.m_dptr = nullptr; - rhs.m_ptr_owner = false; + if (this != &rhs) { + clear(); + m_arena = rhs.m_arena; + m_dptr = rhs.m_dptr; + m_lo = rhs.m_lo; + m_hi = rhs.m_hi; + m_truesize = rhs.m_truesize; + m_ptr_owner = rhs.m_ptr_owner; + rhs.m_dptr = nullptr; + rhs.m_ptr_owner = false; + } return *this; }