From b6c9b5b95fc4b82cd6314f4786970ae9606dc793 Mon Sep 17 00:00:00 2001 From: MRiganSUSX Date: Tue, 11 Mar 2025 14:34:59 +0100 Subject: [PATCH] additional checks for pointer validity --- include/triggeralgs/AbstractFactory.hxx | 8 ++++++++ include/triggeralgs/Issues.hpp | 5 +++++ 2 files changed, 13 insertions(+) diff --git a/include/triggeralgs/AbstractFactory.hxx b/include/triggeralgs/AbstractFactory.hxx index 7f292bf..26e2911 100644 --- a/include/triggeralgs/AbstractFactory.hxx +++ b/include/triggeralgs/AbstractFactory.hxx @@ -25,6 +25,14 @@ template void AbstractFactory::register_creator(const std::string alg_name, maker_creator creator) { creation_map& makers = get_makers(); + + // Check invalid state in the map + for (const auto& pair : makers) { + if (!pair.second) { // nullptr or invalid + throw FactoryInvalidState(ERS_HERE, alg_name); + } + } + auto it = makers.find(alg_name); if (it == makers.end()) { diff --git a/include/triggeralgs/Issues.hpp b/include/triggeralgs/Issues.hpp index 9c23f6e..672128d 100644 --- a/include/triggeralgs/Issues.hpp +++ b/include/triggeralgs/Issues.hpp @@ -19,6 +19,11 @@ ERS_DECLARE_ISSUE(triggeralgs, "Attempted to overwrite a creator in factory with " << alg_name, ((std::string)alg_name)) +ERS_DECLARE_ISSUE(triggeralgs, + FactoryInvalidState, + "Makers map contains invalid/null pointers " << alg_name, + ((std::string)alg_name)) + ERS_DECLARE_ISSUE(triggeralgs, FactoryNotFound, "Factory couldn't find: " << alg_name,