From 828f8a2cbd828aa0806c72a1870f935b8cda40d4 Mon Sep 17 00:00:00 2001 From: Aurindam Jana <aurindam.jana@nokia.com> Date: Tue, 13 Dec 2011 16:45:32 +0100 Subject: [PATCH] QmlV8DebuggerClient: Evaluate expressions Check if the current stack frame is usable before sending eval request to v8. Change-Id: Ief687516b1b4a323c2b602f1b54d83ff7661bed4 Reviewed-by: Kai Koehne <kai.koehne@nokia.com> --- .../debugger/qml/qmlv8debuggerclient.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/plugins/debugger/qml/qmlv8debuggerclient.cpp b/src/plugins/debugger/qml/qmlv8debuggerclient.cpp index 42dcfc74118..1135464fc78 100644 --- a/src/plugins/debugger/qml/qmlv8debuggerclient.cpp +++ b/src/plugins/debugger/qml/qmlv8debuggerclient.cpp @@ -1119,8 +1119,10 @@ void QmlV8DebuggerClient::assignValueInDebugger(const QByteArray /*expr*/, const { StackHandler *stackHandler = d->engine->stackHandler(); QString expression = QString(_("%1 = %2;")).arg(property).arg(value); - if (stackHandler->isContentsValid()) { - d->evaluate(expression/*, false, false, stackHandler->currentIndex()*/); + if (stackHandler->isContentsValid() && stackHandler->currentFrame().isUsable()) { + d->evaluate(expression, false, false, stackHandler->currentIndex()); + } else { + d->engine->showMessage(QString(_("Cannot evaluate %1 in current stack frame")).arg(expression), ScriptConsoleOutput); } } @@ -1132,12 +1134,12 @@ void QmlV8DebuggerClient::updateWatchData(const WatchData &/*data*/) void QmlV8DebuggerClient::executeDebuggerCommand(const QString &command) { StackHandler *stackHandler = d->engine->stackHandler(); - if (stackHandler->isContentsValid()) { - d->evaluate(command/*, false, false, stackHandler->currentIndex()*/); + if (stackHandler->isContentsValid() && stackHandler->currentFrame().isUsable()) { + d->evaluate(command, false, false, stackHandler->currentIndex()); d->evaluatingExpression.insert(d->sequence, command); } else { //Currently cannot evaluate if not in a javascript break - d->engine->showMessage(_("Request Was Unsuccessful"), ScriptConsoleOutput); + d->engine->showMessage(QString(_("Cannot evaluate %1 in current stack frame")).arg(command), ScriptConsoleOutput); // d->evaluate(command); } } @@ -1148,7 +1150,11 @@ void QmlV8DebuggerClient::synchronizeWatchers(const QStringList &watchers) foreach (const QString &exp, watchers) { if (!d->watchedExpressions.contains(exp)) { d->watchedExpressions << exp; - executeDebuggerCommand(exp); + StackHandler *stackHandler = d->engine->stackHandler(); + if (stackHandler->isContentsValid() && stackHandler->currentFrame().isUsable()) { + d->evaluate(exp, false, false, stackHandler->currentIndex()); + d->evaluatingExpression.insert(d->sequence, exp); + } } } } -- GitLab