forked from qt-creator/qt-creator
Copilot: avoid crash on misconfigured agent
When setting up a wrong or unusable agent.js the client used inside the AuthWidget get's deleted eventually. In that case we need to reset the tracked client otherwise we use a pointer to the deleted client in the destructor of AuthWidget. Change-Id: Ide4067c01cdcd05a33d44bc9460acfe9a56c7815 Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io> Reviewed-by: Artem Sokolovskii <artem.sokolovskii@qt.io>
This commit is contained in:
@@ -95,14 +95,19 @@ void AuthWidget::updateClient(const Utils::FilePath &nodeJs, const Utils::FilePa
|
||||
m_client = nullptr;
|
||||
setState(Tr::tr("Sign In"), false);
|
||||
m_button->setEnabled(false);
|
||||
if (!nodeJs.isExecutableFile() || !agent.exists()) {
|
||||
if (!nodeJs.isExecutableFile() || !agent.exists())
|
||||
return;
|
||||
}
|
||||
|
||||
setState(Tr::tr("Sign In"), true);
|
||||
|
||||
m_client = new CopilotClient(nodeJs, agent);
|
||||
connect(m_client, &Client::initialized, this, &AuthWidget::checkStatus);
|
||||
connect(m_client, &QObject::destroyed, this, [destroyedClient = m_client, this]() {
|
||||
if (destroyedClient != m_client)
|
||||
return;
|
||||
m_client = nullptr;
|
||||
m_progressIndicator->hide();
|
||||
});
|
||||
}
|
||||
|
||||
void AuthWidget::signIn()
|
||||
|
Reference in New Issue
Block a user