QmlProfiler: fix potential crash

fixes Ib2ea66bd5694046577a0b5a0e2f611f3ffba0238

Change-Id: Ib7a4e02391513984f1c81a43a5fab490b7f88923
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
This commit is contained in:
Christiaan Janssen
2013-06-05 10:48:16 +02:00
parent 570320fecd
commit 485315ec67
3 changed files with 7 additions and 3 deletions

View File

@@ -41,6 +41,11 @@ LocalQmlProfilerRunner::LocalQmlProfilerRunner(const Configuration &configuratio
this, SIGNAL(appendMessage(QString,Utils::OutputFormat))); this, SIGNAL(appendMessage(QString,Utils::OutputFormat)));
} }
LocalQmlProfilerRunner::~LocalQmlProfilerRunner()
{
disconnect();
}
void LocalQmlProfilerRunner::start() void LocalQmlProfilerRunner::start()
{ {
QString arguments = QString::fromLatin1("-qmljsdebugger=port:%1,block").arg(m_configuration.port); QString arguments = QString::fromLatin1("-qmljsdebugger=port:%1,block").arg(m_configuration.port);

View File

@@ -52,6 +52,7 @@ public:
}; };
explicit LocalQmlProfilerRunner(const Configuration &configuration, QObject *parent = 0); explicit LocalQmlProfilerRunner(const Configuration &configuration, QObject *parent = 0);
~LocalQmlProfilerRunner();
// AbstractQmlProfilerRunner // AbstractQmlProfilerRunner
virtual void start(); virtual void start();

View File

@@ -61,7 +61,7 @@ class QmlProfilerEngine::QmlProfilerEnginePrivate
{ {
public: public:
QmlProfilerEnginePrivate(QmlProfilerEngine *qq) : q(qq), m_runner(0) {} QmlProfilerEnginePrivate(QmlProfilerEngine *qq) : q(qq), m_runner(0) {}
~QmlProfilerEnginePrivate() { m_runner->disconnect(); delete m_runner; } ~QmlProfilerEnginePrivate() { delete m_runner; }
bool attach(const QString &address, uint port); bool attach(const QString &address, uint port);
static AbstractQmlProfilerRunner *createRunner(ProjectExplorer::RunConfiguration *runConfiguration, static AbstractQmlProfilerRunner *createRunner(ProjectExplorer::RunConfiguration *runConfiguration,
@@ -153,7 +153,6 @@ bool QmlProfilerEngine::start()
QTC_ASSERT(d->m_profilerState, return false); QTC_ASSERT(d->m_profilerState, return false);
if (d->m_runner) { if (d->m_runner) {
d->m_runner->disconnect();
delete d->m_runner; delete d->m_runner;
d->m_runner = 0; d->m_runner = 0;
} }
@@ -365,7 +364,6 @@ void QmlProfilerEngine::profilerStateChanged()
// (a new one will be created at start) // (a new one will be created at start)
d->m_noDebugOutputTimer.stop(); d->m_noDebugOutputTimer.stop();
if (d->m_runner) { if (d->m_runner) {
d->m_runner->disconnect();
delete d->m_runner; delete d->m_runner;
d->m_runner = 0; d->m_runner = 0;
} }