Skip to content

Commit ad16e9e

Browse files
committed
Check for the existence of "ipc" object
1 parent a10782c commit ad16e9e

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

atom/renderer/atom_render_view_observer.cc

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,15 @@ namespace atom {
2929

3030
namespace {
3131

32-
v8::Handle<v8::Object> GetIPCObject(v8::Isolate* isolate,
33-
v8::Handle<v8::Context> context) {
32+
bool GetIPCObject(v8::Isolate* isolate,
33+
v8::Handle<v8::Context> context,
34+
v8::Handle<v8::Object>* ipc) {
3435
v8::Handle<v8::String> key = mate::StringToV8(isolate, "ipc");
35-
return context->Global()->GetHiddenValue(key)->ToObject();
36+
v8::Handle<v8::Value> value = context->Global()->GetHiddenValue(key);
37+
if (value.IsEmpty() || !value->IsObject())
38+
return false;
39+
*ipc = value->ToObject();
40+
return true;
3641
}
3742

3843
std::vector<v8::Handle<v8::Value>> ListValueToVector(
@@ -118,8 +123,9 @@ void AtomRenderViewObserver::OnBrowserMessage(const base::string16& channel,
118123
isolate, args);
119124
arguments.insert(arguments.begin(), mate::ConvertToV8(isolate, channel));
120125

121-
v8::Handle<v8::Object> ipc = GetIPCObject(isolate, context);
122-
node::MakeCallback(isolate, ipc, "emit", arguments.size(), &arguments[0]);
126+
v8::Handle<v8::Object> ipc;
127+
if (GetIPCObject(isolate, context, &ipc))
128+
node::MakeCallback(isolate, ipc, "emit", arguments.size(), &arguments[0]);
123129
}
124130

125131
} // namespace atom

0 commit comments

Comments
 (0)