add a null-pointer check before processing base::SupportsUserData::GetUserData

This commit is contained in:
Boik 2017-10-03 12:42:35 +08:00
Родитель 68d35dbeb1
Коммит d594092675
2 изменённых файлов: 17 добавлений и 9 удалений

Просмотреть файл

@ -6,6 +6,7 @@
#include "atom/browser/atom_browser_main_parts.h"
#include "base/bind.h"
#include "base/memory/ptr_util.h"
#include "base/supports_user_data.h"
namespace mate {
@ -46,16 +47,19 @@ void TrackableObjectBase::Destroy() {
}
void TrackableObjectBase::AttachAsUserData(base::SupportsUserData* wrapped) {
wrapped->SetUserData(kTrackedObjectKey, new IDUserData(weak_map_id_));
wrapped->SetUserData(kTrackedObjectKey,
base::MakeUnique<IDUserData>(weak_map_id_));
}
// static
int32_t TrackableObjectBase::GetIDFromWrappedClass(base::SupportsUserData* w) {
auto id = static_cast<IDUserData*>(w->GetUserData(kTrackedObjectKey));
if (id)
return *id;
else
return 0;
int32_t TrackableObjectBase::GetIDFromWrappedClass(
base::SupportsUserData* wrapped) {
if (wrapped) {
auto id = static_cast<IDUserData*>(wrapped->GetUserData(kTrackedObjectKey));
if (id)
return *id;
}
return 0;
}
// static

Просмотреть файл

@ -82,8 +82,12 @@ void ToDictionary(base::DictionaryValue* details, net::URLRequest* request) {
int frame_id = info->GetRenderFrameID();
auto* webContents = content::WebContents::FromRenderFrameHost(
content::RenderFrameHost::FromID(process_id, frame_id));
details->SetInteger("webContentsId",
atom::api::WebContents::GetIDFromWrappedClass(webContents));
int webContentsId = atom::api::WebContents::GetIDFromWrappedClass(
webContents);
// webContentsId must be greater than zero
if (webContentsId)
details->SetInteger("webContentsId", webContentsId);
details->SetString("resourceType",
ResourceTypeToString(info->GetResourceType()));
} else {