@@ -29,10 +29,15 @@ namespace atom {
29
29
30
30
namespace {
31
31
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) {
34
35
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 ;
36
41
}
37
42
38
43
std::vector<v8::Handle<v8::Value>> ListValueToVector (
@@ -118,8 +123,9 @@ void AtomRenderViewObserver::OnBrowserMessage(const base::string16& channel,
118
123
isolate, args);
119
124
arguments.insert (arguments.begin (), mate::ConvertToV8 (isolate, channel));
120
125
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 ]);
123
129
}
124
130
125
131
} // namespace atom
0 commit comments