summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/extensions
diff options
context:
space:
mode:
authormpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-07-30 23:51:58 +0000
committermpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-07-30 23:51:58 +0000
commit92f6b46fbf2bf91fb59a4a74981eb3d6b3a27e97 (patch)
treeb40c1bbe1cbf63059002fabef8755ac802a6c91b /chrome/renderer/extensions
parentae2622c3d49beb6d3a7eafe75f003619181596f2 (diff)
downloadchromium_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.cc12
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