diff options
author | mpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-30 23:51:58 +0000 |
---|---|---|
committer | mpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-30 23:51:58 +0000 |
commit | 92f6b46fbf2bf91fb59a4a74981eb3d6b3a27e97 (patch) | |
tree | b40c1bbe1cbf63059002fabef8755ac802a6c91b /chrome/renderer/extensions | |
parent | ae2622c3d49beb6d3a7eafe75f003619181596f2 (diff) | |
download | chromium_src-92f6b46fbf2bf91fb59a4a74981eb3d6b3a27e97.zip chromium_src-92f6b46fbf2bf91fb59a4a74981eb3d6b3a27e97.tar.gz chromium_src-92f6b46fbf2bf91fb59a4a74981eb3d6b3a27e97.tar.bz2 |
Fix a crash that was caused by a NULL entry in the PendingRequestMap.
BUG=no
TEST=no
Review URL: http://codereview.chromium.org/159662
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@22121 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/extensions')
-rw-r--r-- | chrome/renderer/extensions/extension_process_bindings.cc | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/chrome/renderer/extensions/extension_process_bindings.cc b/chrome/renderer/extensions/extension_process_bindings.cc index d5cdefe..131b9a0 100644 --- a/chrome/renderer/extensions/extension_process_bindings.cc +++ b/chrome/renderer/extensions/extension_process_bindings.cc @@ -22,6 +22,7 @@ using bindings_utils::ContextList; using bindings_utils::GetContexts; using bindings_utils::GetPendingRequestMap; using bindings_utils::PendingRequest; +using bindings_utils::PendingRequestMap; using bindings_utils::ExtensionBase; namespace { @@ -218,21 +219,22 @@ void ExtensionProcessBindings::SetFunctionNames( void ExtensionProcessBindings::HandleResponse(int request_id, bool success, const std::string& response, const std::string& error) { - PendingRequest* request = GetPendingRequestMap()[request_id].get(); - if (!request) + PendingRequestMap& pending_requests = GetPendingRequestMap(); + PendingRequestMap::iterator request = pending_requests.find(request_id); + if (request == pending_requests.end()) return; // The frame went away. v8::HandleScope handle_scope; v8::Handle<v8::Value> argv[5]; argv[0] = v8::Integer::New(request_id); - argv[1] = v8::String::New(request->name.c_str()); + argv[1] = v8::String::New(request->second->name.c_str()); argv[2] = v8::Boolean::New(success); argv[3] = v8::String::New(response.c_str()); argv[4] = v8::String::New(error.c_str()); bindings_utils::CallFunctionInContext( - request->context, "handleResponse", arraysize(argv), argv); + request->second->context, "handleResponse", arraysize(argv), argv); - GetPendingRequestMap().erase(request_id); + pending_requests.erase(request); } // static |