aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormax-001 <maxsmits21@kpnmail.nl>2024-11-05 14:39:05 +0100
committermax-001 <maxsmits21@kpnmail.nl>2024-11-05 14:39:05 +0100
commit20bb6820d1f5f5c0260bbe86c938ca4e4d91a1ae (patch)
tree6e3bdeabf277c8789ad349b52ec4bc524e5e8424
parent3d6fbf38dba40c97d2a06cfe2cf344190d05cfe4 (diff)
Made add_component() exception save
-rw-r--r--src/crepe/ComponentManager.hpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/crepe/ComponentManager.hpp b/src/crepe/ComponentManager.hpp
index 66e027f..f469d12 100644
--- a/src/crepe/ComponentManager.hpp
+++ b/src/crepe/ComponentManager.hpp
@@ -30,7 +30,8 @@ T & ComponentManager::add_component(uint32_t id, Args &&... args) {
// Create a new component of type T (arguments directly forwarded). The
// constructor must be called by ComponentManager.
- T * instance = new T(id, forward<Args>(args)...);
+ T * instance_pointer = new T(id, forward<Args>(args)...);
+ unique_ptr<T> instance = unique_ptr<T>(instance_pointer);
// Check if the vector size is not greater than get_instances_max
if (instance->get_instances_max() != -1
@@ -40,7 +41,7 @@ T & ComponentManager::add_component(uint32_t id, Args &&... args) {
}
// store its unique_ptr in the vector<>
- components[type][id].push_back(unique_ptr<T>(instance));
+ components[type][id].push_back(move(instance));
return *instance;
}