From 786c0a5462b2092628a6fe3dd42954d402948d4f Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Thu, 15 Jan 2015 14:00:45 -0800 Subject: [PATCH] Drop DM ref before creating new object --- libraries/shared/src/DependencyManager.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/libraries/shared/src/DependencyManager.h b/libraries/shared/src/DependencyManager.h index e996e10590..3868bf14da 100644 --- a/libraries/shared/src/DependencyManager.h +++ b/libraries/shared/src/DependencyManager.h @@ -83,11 +83,13 @@ template QSharedPointer DependencyManager::set(Args&&... args) { static size_t hashCode = _manager.getHashCode(); - QSharedPointer instance(new T(args...), &T::customDeleter); - QSharedPointer storedInstance = qSharedPointerCast(instance); - _manager.safeGet(hashCode).swap(storedInstance); + QSharedPointer& instance = _manager.safeGet(hashCode); + instance.clear(); // Clear instance before creation of new one to avoid edge cases + QSharedPointer newInstance(new T(args...), &T::customDeleter); + QSharedPointer storedInstance = qSharedPointerCast(newInstance); + instance.swap(storedInstance); - return instance; + return newInstance; } template