From c38aabdaee434f143c457a7bb369f843c6847d84 Mon Sep 17 00:00:00 2001 From: Alex Kremer Date: Tue, 10 Mar 2026 17:42:49 +0000 Subject: [PATCH] chore: Enable clang-tidy `bugprone-unhandled-self-assignment` check (#6504) --- .clang-tidy | 2 +- src/libxrpl/protocol/STBase.cpp | 3 +++ src/libxrpl/resource/Consumer.cpp | 3 +++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.clang-tidy b/.clang-tidy index 04bb857609..f374af30a4 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -64,6 +64,7 @@ Checks: "-*, bugprone-undefined-memory-manipulation, bugprone-undelegated-constructor, bugprone-unhandled-exception-at-new, + bugprone-unhandled-self-assignment, bugprone-unique-ptr-array-mismatch, bugprone-unsafe-functions, bugprone-unused-local-non-trivial-variable, @@ -100,7 +101,6 @@ Checks: "-*, # bugprone-switch-missing-default-case, # bugprone-unused-return-value, # bugprone-use-after-move, -# bugprone-unhandled-self-assignment, # bugprone-unused-raii, # # cppcoreguidelines-misleading-capture-default-by-value, diff --git a/src/libxrpl/protocol/STBase.cpp b/src/libxrpl/protocol/STBase.cpp index f6b1dcec58..3c5c34ae4e 100644 --- a/src/libxrpl/protocol/STBase.cpp +++ b/src/libxrpl/protocol/STBase.cpp @@ -23,6 +23,9 @@ STBase::STBase(SField const& n) : fName(&n) STBase& STBase::operator=(STBase const& t) { + if (this == &t) + return *this; + if (!fName->isUseful()) fName = t.fName; return *this; diff --git a/src/libxrpl/resource/Consumer.cpp b/src/libxrpl/resource/Consumer.cpp index 11c23b1044..e9435bd340 100644 --- a/src/libxrpl/resource/Consumer.cpp +++ b/src/libxrpl/resource/Consumer.cpp @@ -39,6 +39,9 @@ Consumer::~Consumer() Consumer& Consumer::operator=(Consumer const& other) { + if (this == &other) + return *this; + // remove old ref if (m_logic && m_entry) m_logic->release(*m_entry);