Title: [93042] trunk/Source/WebCore
Revision
93042
Author
pfeld...@chromium.org
Date
2011-08-15 07:32:41 -0700 (Mon, 15 Aug 2011)

Log Message

Web Inspector: [V8] crash upon stepIn while not on pause.
https://bugs.webkit.org/show_bug.cgi?id=66221

Reviewed by Yury Semikhatsky.

* inspector/InspectorDebuggerAgent.cpp:
(WebCore::InspectorDebuggerAgent::resume):
(WebCore::InspectorDebuggerAgent::stepOver):
(WebCore::InspectorDebuggerAgent::stepInto):
(WebCore::InspectorDebuggerAgent::stepOut):
(WebCore::InspectorDebuggerAgent::assertPaused):
* inspector/InspectorDebuggerAgent.h:
* inspector/front-end/ScriptsPanel.js:
(WebInspector.ScriptsPanel.prototype._stepOverClicked):
(WebInspector.ScriptsPanel.prototype._stepIntoClicked):
(WebInspector.ScriptsPanel.prototype._stepOutClicked):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (93041 => 93042)


--- trunk/Source/WebCore/ChangeLog	2011-08-15 14:26:24 UTC (rev 93041)
+++ trunk/Source/WebCore/ChangeLog	2011-08-15 14:32:41 UTC (rev 93042)
@@ -1,3 +1,22 @@
+2011-08-15  Pavel Feldman  <pfeld...@google.com>
+
+        Web Inspector: [V8] crash upon stepIn while not on pause.
+        https://bugs.webkit.org/show_bug.cgi?id=66221
+
+        Reviewed by Yury Semikhatsky.
+
+        * inspector/InspectorDebuggerAgent.cpp:
+        (WebCore::InspectorDebuggerAgent::resume):
+        (WebCore::InspectorDebuggerAgent::stepOver):
+        (WebCore::InspectorDebuggerAgent::stepInto):
+        (WebCore::InspectorDebuggerAgent::stepOut):
+        (WebCore::InspectorDebuggerAgent::assertPaused):
+        * inspector/InspectorDebuggerAgent.h:
+        * inspector/front-end/ScriptsPanel.js:
+        (WebInspector.ScriptsPanel.prototype._stepOverClicked):
+        (WebInspector.ScriptsPanel.prototype._stepIntoClicked):
+        (WebInspector.ScriptsPanel.prototype._stepOutClicked):
+
 2011-08-15  Vsevolod Vlasov  <vse...@chromium.org>
 
         Web Inspector: Network panel: display the current search match index in the toolbar.

Modified: trunk/Source/WebCore/inspector/InspectorDebuggerAgent.cpp (93041 => 93042)


--- trunk/Source/WebCore/inspector/InspectorDebuggerAgent.cpp	2011-08-15 14:26:24 UTC (rev 93041)
+++ trunk/Source/WebCore/inspector/InspectorDebuggerAgent.cpp	2011-08-15 14:32:41 UTC (rev 93042)
@@ -356,24 +356,32 @@
     m_javaScriptPauseScheduled = true;
 }
 
-void InspectorDebuggerAgent::resume(ErrorString*)
+void InspectorDebuggerAgent::resume(ErrorString* errorString)
 {
+    if (!assertPaused(errorString))
+        return;
     m_injectedScriptManager->releaseObjectGroup(InspectorDebuggerAgent::backtraceObjectGroup);
     scriptDebugServer().continueProgram();
 }
 
-void InspectorDebuggerAgent::stepOver(ErrorString*)
+void InspectorDebuggerAgent::stepOver(ErrorString* errorString)
 {
+    if (!assertPaused(errorString))
+        return;
     scriptDebugServer().stepOverStatement();
 }
 
-void InspectorDebuggerAgent::stepInto(ErrorString*)
+void InspectorDebuggerAgent::stepInto(ErrorString* errorString)
 {
+    if (!assertPaused(errorString))
+        return;
     scriptDebugServer().stepIntoStatement();
 }
 
-void InspectorDebuggerAgent::stepOut(ErrorString*)
+void InspectorDebuggerAgent::stepOut(ErrorString* errorString)
 {
+    if (!assertPaused(errorString))
+        return;
     scriptDebugServer().stepOutOfFunction();
 }
 
@@ -505,6 +513,15 @@
     m_javaScriptPauseScheduled = false;
 }
 
+bool InspectorDebuggerAgent::assertPaused(ErrorString* errorString)
+{
+    if (!m_pausedScriptState) {
+        *errorString = "Can only perform operation while paused.";
+        return false;
+    }
+    return true;
+}
+
 } // namespace WebCore
 
 #endif // ENABLE(_javascript__DEBUGGER) && ENABLE(INSPECTOR)

Modified: trunk/Source/WebCore/inspector/InspectorDebuggerAgent.h (93041 => 93042)


--- trunk/Source/WebCore/inspector/InspectorDebuggerAgent.h	2011-08-15 14:26:24 UTC (rev 93041)
+++ trunk/Source/WebCore/inspector/InspectorDebuggerAgent.h	2011-08-15 14:32:41 UTC (rev 93042)
@@ -136,6 +136,7 @@
 
     PassRefPtr<InspectorObject> resolveBreakpoint(const String& breakpointId, const String& scriptId, const ScriptBreakpoint&);
     void clear();
+    bool assertPaused(ErrorString*);
 
     typedef HashMap<String, Script> ScriptsMap;
     typedef HashMap<String, Vector<String> > BreakpointIdToDebugServerBreakpointIdsMap;

Modified: trunk/Source/WebCore/inspector/front-end/ScriptsPanel.js (93041 => 93042)


--- trunk/Source/WebCore/inspector/front-end/ScriptsPanel.js	2011-08-15 14:26:24 UTC (rev 93041)
+++ trunk/Source/WebCore/inspector/front-end/ScriptsPanel.js	2011-08-15 14:32:41 UTC (rev 93042)
@@ -950,6 +950,9 @@
 
     _stepOverClicked: function()
     {
+        if (!this._paused)
+            return;
+
         this._paused = false;
         this._stepping = true;
 
@@ -960,6 +963,9 @@
 
     _stepIntoClicked: function()
     {
+        if (!this._paused)
+            return;
+
         this._paused = false;
         this._stepping = true;
 
@@ -970,6 +976,9 @@
 
     _stepOutClicked: function()
     {
+        if (!this._paused)
+            return;
+
         this._paused = false;
         this._stepping = true;
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to