forked from qt-creator/qt-creator
IosToolTaskAdapter: Don't leak the IosToolHandler on destruction
The TaskAdapter may be destructed at any point in time,
even when the task is still running (i.e. when the task tree
was canceled). Make sure the internal IosToolHandler gets
deleted in this case.
Amends 150441bf88
Change-Id: I1ae4d324390c38d4faf9ec32f83c66295ed18532
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
@@ -992,12 +992,12 @@ IosToolTaskAdapter::IosToolTaskAdapter() {}
|
|||||||
|
|
||||||
void IosToolTaskAdapter::start()
|
void IosToolTaskAdapter::start()
|
||||||
{
|
{
|
||||||
task()->m_iosToolHandler = new IosToolHandler(Internal::IosDeviceType(task()->m_deviceType));
|
task()->m_iosToolHandler.reset(new IosToolHandler(Internal::IosDeviceType(task()->m_deviceType)));
|
||||||
connect(task()->m_iosToolHandler, &IosToolHandler::finished, this, [this] {
|
connect(task()->m_iosToolHandler.get(), &IosToolHandler::finished, this, [this] {
|
||||||
task()->m_iosToolHandler->deleteLater();
|
task()->m_iosToolHandler.release()->deleteLater();
|
||||||
emit done(Tasking::DoneResult::Success);
|
emit done(Tasking::DoneResult::Success);
|
||||||
});
|
});
|
||||||
task()->m_startHandler(task()->m_iosToolHandler);
|
task()->m_startHandler(task()->m_iosToolHandler.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Ios
|
} // namespace Ios
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
friend class IosToolTaskAdapter;
|
friend class IosToolTaskAdapter;
|
||||||
IosToolHandler *m_iosToolHandler = nullptr;
|
std::unique_ptr<IosToolHandler> m_iosToolHandler;
|
||||||
StartHandler m_startHandler;
|
StartHandler m_startHandler;
|
||||||
Internal::IosDeviceType m_deviceType = Internal::IosDeviceType::IosDevice;
|
Internal::IosDeviceType m_deviceType = Internal::IosDeviceType::IosDevice;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user