summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpfeldman@chromium.org <pfeldman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-01 17:46:31 +0000
committerpfeldman@chromium.org <pfeldman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-01 17:46:31 +0000
commita6f5ce00cdba02f54f3e80dbec99eaf78443e9ac (patch)
tree8e653f45fffa4b2203ed5aa6b09c6948a0e8c9b6
parent0ca47854e874c3f2a5af86590608f4629e8c84ac (diff)
downloadchromium_src-a6f5ce00cdba02f54f3e80dbec99eaf78443e9ac.zip
chromium_src-a6f5ce00cdba02f54f3e80dbec99eaf78443e9ac.tar.gz
chromium_src-a6f5ce00cdba02f54f3e80dbec99eaf78443e9ac.tar.bz2
DevTools: Fix access violation (null pointer) on document tear down.
Review URL: http://codereview.chromium.org/100261 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@15067 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--webkit/glue/devtools/debugger_agent_impl.cc5
-rw-r--r--webkit/glue/devtools/debugger_agent_impl.h4
-rw-r--r--webkit/glue/webdevtoolsagent_impl.cc4
3 files changed, 8 insertions, 5 deletions
diff --git a/webkit/glue/devtools/debugger_agent_impl.cc b/webkit/glue/devtools/debugger_agent_impl.cc
index f8d99ec..ac69664 100644
--- a/webkit/glue/devtools/debugger_agent_impl.cc
+++ b/webkit/glue/devtools/debugger_agent_impl.cc
@@ -61,12 +61,15 @@ void DebuggerAgentImpl::DebuggerOutput(const std::string& command) {
webdevtools_agent_->ForceRepaint();
}
-void DebuggerAgentImpl::CreateUtilityContext(
+void DebuggerAgentImpl::ResetUtilityContext(
Document* document,
v8::Persistent<v8::Context>* context) {
if (!context->IsEmpty()) {
context->Dispose();
}
+ if (!document) {
+ return;
+ }
v8::HandleScope scope;
// TODO(pfeldman): Validate against Soeren.
diff --git a/webkit/glue/devtools/debugger_agent_impl.h b/webkit/glue/devtools/debugger_agent_impl.h
index 2f9b2b8..bfd3e96 100644
--- a/webkit/glue/devtools/debugger_agent_impl.h
+++ b/webkit/glue/devtools/debugger_agent_impl.h
@@ -29,8 +29,8 @@ class DebuggerAgentImpl : public DebuggerAgent {
virtual ~DebuggerAgentImpl();
// Creates utility context with injected js agent.
- void CreateUtilityContext(WebCore::Document* document,
- v8::Persistent<v8::Context>* context);
+ void ResetUtilityContext(WebCore::Document* document,
+ v8::Persistent<v8::Context>* context);
// DebuggerAgent implementation.
virtual void DebugBreak();
diff --git a/webkit/glue/webdevtoolsagent_impl.cc b/webkit/glue/webdevtoolsagent_impl.cc
index 49f457b..6de1ec5 100644
--- a/webkit/glue/webdevtoolsagent_impl.cc
+++ b/webkit/glue/webdevtoolsagent_impl.cc
@@ -78,7 +78,7 @@ void WebDevToolsAgentImpl::Attach() {
if (doc) {
// Reuse existing context in case detached/attached.
if (utility_context_.IsEmpty()) {
- debugger_agent_impl_->CreateUtilityContext(doc, &utility_context_);
+ debugger_agent_impl_->ResetUtilityContext(doc, &utility_context_);
}
dom_agent_impl_->SetDocument(doc);
net_agent_impl_->SetDocument(doc);
@@ -116,7 +116,7 @@ void WebDevToolsAgentImpl::SetMainFrameDocumentReady(bool ready) {
} else {
doc = NULL;
}
- debugger_agent_impl_->CreateUtilityContext(doc, &utility_context_);
+ debugger_agent_impl_->ResetUtilityContext(doc, &utility_context_);
dom_agent_impl_->SetDocument(doc);
net_agent_impl_->SetDocument(doc);
}