aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4debugging.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@theqtcompany.com>2014-12-19 12:39:21 +0100
committerSimon Hausmann <simon.hausmann@digia.com>2014-12-19 16:30:13 +0100
commitb50278bda4df94550bfbe5663ddebcd4b0f9734f (patch)
tree44b2f0ad631781b0aadde713c342e299542b1860 /src/qml/jsruntime/qv4debugging.cpp
parent0de16adf3d48f56e7556df392c38bcfd2b8c9796 (diff)
Fix GC crash with conditional breakpoints and JS console
We may choose to execute an expression in a specific frame within the debugger, which is where we pop context's until we reached the frame in question. If we are trying to execute an expression at the top of the stack (or with a conditional breakpoint expression), then we don't have a frame and don't need to pop contexts. But also also don't need to call Scope::alloc(-1). Change-Id: I1f6754a3d77d943aed9bf4468e817a5269a3c547 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/jsruntime/qv4debugging.cpp')
-rw-r--r--src/qml/jsruntime/qv4debugging.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/qml/jsruntime/qv4debugging.cpp b/src/qml/jsruntime/qv4debugging.cpp
index ca5af36f1c..483d75011a 100644
--- a/src/qml/jsruntime/qv4debugging.cpp
+++ b/src/qml/jsruntime/qv4debugging.cpp
@@ -67,10 +67,12 @@ public:
ExecutionContextSaver saver(scope, engine->currentContext());
- Value *savedContexts = scope.alloc(frameNr);
- for (int i = 0; i < frameNr; ++i) {
- savedContexts[i] = engine->currentContext();
- engine->popContext();
+ if (frameNr > 0) {
+ Value *savedContexts = scope.alloc(frameNr);
+ for (int i = 0; i < frameNr; ++i) {
+ savedContexts[i] = engine->currentContext();
+ engine->popContext();
+ }
}
ScopedContext ctx(scope, engine->currentContext());