forked from qt-creator/qt-creator
Git: Fix potential heap use after free
Closing the dialog before the process terminates might lead to this. Task-number: QTCREATORBUG-13075 Change-Id: I3b6ffcca010eb356b14d87f2a7d62090c158faba Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com> Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
This commit is contained in:
committed by
Orgad Shaneh
parent
3f3554eb13
commit
72c33cbadd
@@ -94,8 +94,8 @@ ChangeSelectionDialog::ChangeSelectionDialog(const QString &workingDirectory, Co
|
|||||||
|
|
||||||
ChangeSelectionDialog::~ChangeSelectionDialog()
|
ChangeSelectionDialog::~ChangeSelectionDialog()
|
||||||
{
|
{
|
||||||
|
terminateProcess();
|
||||||
delete m_ui;
|
delete m_ui;
|
||||||
delete m_process;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QString ChangeSelectionDialog::change() const
|
QString ChangeSelectionDialog::change() const
|
||||||
@@ -197,6 +197,16 @@ void ChangeSelectionDialog::enableButtons(bool b)
|
|||||||
m_ui->checkoutButton->setEnabled(b);
|
m_ui->checkoutButton->setEnabled(b);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ChangeSelectionDialog::terminateProcess()
|
||||||
|
{
|
||||||
|
if (!m_process)
|
||||||
|
return;
|
||||||
|
m_process->kill();
|
||||||
|
m_process->waitForFinished();
|
||||||
|
delete m_process;
|
||||||
|
m_process = 0;
|
||||||
|
}
|
||||||
|
|
||||||
void ChangeSelectionDialog::recalculateCompletion()
|
void ChangeSelectionDialog::recalculateCompletion()
|
||||||
{
|
{
|
||||||
const QString workingDir = workingDirectory();
|
const QString workingDir = workingDirectory();
|
||||||
@@ -219,12 +229,7 @@ void ChangeSelectionDialog::recalculateCompletion()
|
|||||||
|
|
||||||
void ChangeSelectionDialog::recalculateDetails()
|
void ChangeSelectionDialog::recalculateDetails()
|
||||||
{
|
{
|
||||||
if (m_process) {
|
terminateProcess();
|
||||||
m_process->kill();
|
|
||||||
m_process->waitForFinished();
|
|
||||||
delete m_process;
|
|
||||||
m_process = 0;
|
|
||||||
}
|
|
||||||
enableButtons(false);
|
enableButtons(false);
|
||||||
|
|
||||||
const QString workingDir = workingDirectory();
|
const QString workingDir = workingDirectory();
|
||||||
|
@@ -85,6 +85,7 @@ private slots:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
void enableButtons(bool b);
|
void enableButtons(bool b);
|
||||||
|
void terminateProcess();
|
||||||
|
|
||||||
Ui::ChangeSelectionDialog *m_ui;
|
Ui::ChangeSelectionDialog *m_ui;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user