diff options
author | Aurindam Jana <aurindam.jana@nokia.com> | 2012-03-21 15:06:18 +0100 |
---|---|---|
committer | Aurindam Jana <aurindam.jana@nokia.com> | 2012-03-22 10:53:10 +0100 |
commit | 3d1f5bd85ca7b291e53eba1569115b664861b500 (patch) | |
tree | 232a09d14ef052efdee96f394fefeb892bf75b6a /src/plugins/debugger/qml/qmlv8debuggerclient.cpp | |
parent | 39cb4e954d08cc71adeaf16319fc8eeb60e38eed (diff) | |
download | qt-creator-3d1f5bd85ca7b291e53eba1569115b664861b500.tar.gz |
QtMessageLogHandler: Fix crash
Set a parent when creating QtMessageLogItem.
Change-Id: I8faf76059dcc517794a4eb3d202bc14cd1632ca8
Reviewed-by: Kai Koehne <kai.koehne@nokia.com>
Diffstat (limited to 'src/plugins/debugger/qml/qmlv8debuggerclient.cpp')
-rw-r--r-- | src/plugins/debugger/qml/qmlv8debuggerclient.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/plugins/debugger/qml/qmlv8debuggerclient.cpp b/src/plugins/debugger/qml/qmlv8debuggerclient.cpp index e83e587da1..db20ac22e7 100644 --- a/src/plugins/debugger/qml/qmlv8debuggerclient.cpp +++ b/src/plugins/debugger/qml/qmlv8debuggerclient.cpp @@ -128,8 +128,8 @@ public: //TODO:: remove this method void reformatRequest(QByteArray &request); - QtMessageLogItem *constructLogItemTree(const QmlV8ObjectData &objectData, - const QVariant &refsVal); + QtMessageLogItem *constructLogItemTree(QtMessageLogItem *parent, + const QmlV8ObjectData &objectData, const QVariant &refsVal); private: QByteArray packMessage(const QByteArray &type, const QByteArray &message = QByteArray()); QScriptValue initObject(); @@ -974,6 +974,7 @@ void QmlV8DebuggerClientPrivate::reformatRequest(QByteArray &request) } QtMessageLogItem *QmlV8DebuggerClientPrivate::constructLogItemTree( + QtMessageLogItem *parent, const QmlV8ObjectData &objectData, const QVariant &refsVal) { @@ -987,12 +988,12 @@ QtMessageLogItem *QmlV8DebuggerClientPrivate::constructLogItemTree( text = QString(_("%1: %2")).arg(QString::fromAscii(objectData.name)) .arg(objectData.value.toString()); - QtMessageLogItem *item = new QtMessageLogItem( - QtMessageLogHandler::UndefinedType, text); + QtMessageLogItem *item = new QtMessageLogItem(parent, + QtMessageLogHandler::UndefinedType, text); foreach (const QVariant &property, objectData.properties) { QtMessageLogItem *child = constructLogItemTree( - extractData(property, refsVal), refsVal); + item, extractData(property, refsVal), refsVal); if (child) item->insertChild(item->childCount(), child); } @@ -1837,7 +1838,8 @@ void QmlV8DebuggerClient::updateEvaluationResult(int sequence, bool success, con } else if (d->debuggerCommands.contains(sequence)) { d->updateLocalsAndWatchers.removeOne(sequence); QmlV8ObjectData body = d->extractData(bodyVal, refsVal); - QtMessageLogItem *item = d->constructLogItemTree(body, refsVal); + QtMessageLogItem *item = d->constructLogItemTree(d->engine->qtMessageLogHandler()->root(), + body, refsVal); if (item) d->engine->qtMessageLogHandler()->appendItem(item); //Update the locals |