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