+2006-07-13 Mark Rowe <opendarwin.org@bdash.net.nz>
+
+ Reviewed by Timothy.
+
+ Bug 9889: [Drosera] Stepping out when paused after last statement in function skips a frame
+ http://bugzilla.opendarwin.org/show_bug.cgi?id=9889
+
+ * Drosera/debugger.js: Track whether we paused during the execution of willLeaveFrame. If
+ so, have stepOut pause on the next call to willExecuteStatement rather than second.
+
2006-07-12 David Kilzer <ddkilzer@kilzer.net>
Reviewed by Darin.
var steppingOver = false;
var steppingStack = 0;
var pauseOnNextStatement = false;
+var pausedWhileLeavingFrame = false;
var consoleWindow = null;
ScriptCallFrame = function (functionName, index, row)
currentCallFrame = null;
pauseOnNextStatement = false;
+ pausedWhileLeavingFrame = false;
steppingOut = false;
steppingOver = false;
steppingStack = 0;
function stepOut()
{
- pauseOnNextStatement = false;
+ pauseOnNextStatement = pausedWhileLeavingFrame;
steppingOver = false;
steppingStack = 0;
steppingOut = true;
loadFile(fileIndex, true);
}
-function willExecuteStatement(sourceId, line)
+function willExecuteStatement(sourceId, line, fromLeavingFrame)
{
var script = scripts[sourceId];
if (line <= 0 || !script)
if (pauseOnNextStatement || file.breakpoints[line] == 1 || (steppingOver && !steppingStack)) {
pause();
pauseOnNextStatement = false;
+ pausedWhileLeavingFrame = fromLeavingFrame || false;
}
if (isPaused()) {
{
if (line <= 0)
resume();
- willExecuteStatement(sourceId, line);
+ willExecuteStatement(sourceId, line, true);
if (!steppingStack)
steppingOver = false;
if (steppingOut && !steppingStack) {