mirror of
https://github.com/overte-org/overte.git
synced 2025-04-25 20:36:38 +02:00
Merge pull request #4117 from Atlante45/dm_update
Drop DM ref before creating new object
This commit is contained in:
commit
b2c5847d9b
1 changed files with 6 additions and 4 deletions
|
@ -83,11 +83,13 @@ template <typename T, typename ...Args>
|
||||||
QSharedPointer<T> DependencyManager::set(Args&&... args) {
|
QSharedPointer<T> DependencyManager::set(Args&&... args) {
|
||||||
static size_t hashCode = _manager.getHashCode<T>();
|
static size_t hashCode = _manager.getHashCode<T>();
|
||||||
|
|
||||||
QSharedPointer<T> instance(new T(args...), &T::customDeleter);
|
QSharedPointer<Dependency>& instance = _manager.safeGet(hashCode);
|
||||||
QSharedPointer<Dependency> storedInstance = qSharedPointerCast<Dependency>(instance);
|
instance.clear(); // Clear instance before creation of new one to avoid edge cases
|
||||||
_manager.safeGet(hashCode).swap(storedInstance);
|
QSharedPointer<T> newInstance(new T(args...), &T::customDeleter);
|
||||||
|
QSharedPointer<Dependency> storedInstance = qSharedPointerCast<Dependency>(newInstance);
|
||||||
|
instance.swap(storedInstance);
|
||||||
|
|
||||||
return instance;
|
return newInstance;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
|
|
Loading…
Reference in a new issue