From ebfc35aba5e78d0cd78d5244bb1f9e7f35632d7e Mon Sep 17 00:00:00 2001 From: Felix Schlepper Date: Thu, 4 Jun 2026 20:14:03 +0200 Subject: [PATCH] Fix memleak in ConfKeyValues Signed-off-by: Felix Schlepper --- .../CommonUtils/ConfigurableParamHelper.h | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/Common/Utils/include/CommonUtils/ConfigurableParamHelper.h b/Common/Utils/include/CommonUtils/ConfigurableParamHelper.h index 6e69fae03e6c3..76631b449670c 100644 --- a/Common/Utils/include/CommonUtils/ConfigurableParamHelper.h +++ b/Common/Utils/include/CommonUtils/ConfigurableParamHelper.h @@ -16,6 +16,7 @@ #include "CommonUtils/ConfigurableParam.h" #include "TClass.h" +#include #include #include #include "TFile.h" @@ -105,22 +106,23 @@ class ConfigurableParamHelper : virtual public ConfigurableParam if (!isInitialized()) { initialize(); } - auto members = getDataMembers(); - _ParamHelper::printMembersImpl(getName(), members, showProv, useLogger, withPadding, showHash); + auto members = std::unique_ptr>(getDataMembers()); + _ParamHelper::printMembersImpl(getName(), members.get(), showProv, useLogger, withPadding, showHash); } // size_t getHash() const final { - return _ParamHelper::getHashImpl(getName(), getDataMembers()); + auto members = std::unique_ptr>(getDataMembers()); + return _ParamHelper::getHashImpl(getName(), members.get()); } // ---------------------------------------------------------------- void output(std::ostream& out) const final { - auto members = getDataMembers(); - _ParamHelper::outputMembersImpl(out, getName(), members, true, false); + auto members = std::unique_ptr>(getDataMembers()); + _ParamHelper::outputMembersImpl(out, getName(), members.get(), true, false); } // ---------------------------------------------------------------- @@ -242,22 +244,23 @@ class ConfigurableParamPromoter : public Base, virtual public ConfigurableParam if (!isInitialized()) { initialize(); } - auto members = getDataMembers(); - _ParamHelper::printMembersImpl(getName(), members, showProv, useLogger, withPadding, showHash); + auto members = std::unique_ptr>(getDataMembers()); + _ParamHelper::printMembersImpl(getName(), members.get(), showProv, useLogger, withPadding, showHash); } // size_t getHash() const final { - return _ParamHelper::getHashImpl(getName(), getDataMembers()); + auto members = std::unique_ptr>(getDataMembers()); + return _ParamHelper::getHashImpl(getName(), members.get()); } // ---------------------------------------------------------------- void output(std::ostream& out) const final { - auto members = getDataMembers(); - _ParamHelper::outputMembersImpl(out, getName(), members, true, false); + auto members = std::unique_ptr>(getDataMembers()); + _ParamHelper::outputMembersImpl(out, getName(), members.get(), true, false); } // ----------------------------------------------------------------