| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent edf3fbb commit cd80195
1 file changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -225,10 +225,19 @@ MaybeLocal<Value> MakeCallback(Isolate* isolate, | |||
| 225 | 225 | int argc, | |
| 226 | 226 | Local<Value> argv[], | |
| 227 | 227 | async_context asyncContext) { | |
| 228 | - Local<Value> callback_v = | ||
| 229 | - recv->Get(isolate->GetCurrentContext(), symbol).ToLocalChecked(); | ||
| 230 | - if (callback_v.IsEmpty()) return Local<Value>(); | ||
| 231 | - if (!callback_v->IsFunction()) return Local<Value>(); | ||
| 228 | + // Check can_call_into_js() first because calling Get() might do so. | ||
| 229 | + Environment* env = Environment::GetCurrent(recv->CreationContext()); | ||
| 230 | + CHECK_NOT_NULL(env); | ||
| 231 | + if (!env->can_call_into_js()) return Local<Value>(); | ||
| 232 | + | ||
| 233 | + Local<Value> callback_v; | ||
| 234 | + if (!recv->Get(isolate->GetCurrentContext(), symbol).ToLocal(&callback_v)) | ||
| 235 | + return Local<Value>(); | ||
| 236 | + if (!callback_v->IsFunction()) { | ||
| 237 | + // This used to return an empty value, but Undefined() makes more sense | ||
| 238 | + // since no exception is pending here. | ||
| 239 | + return Undefined(isolate); | ||
| 240 | + } | ||
| 232 | 241 | Local<Function> callback = callback_v.As<Function>(); | |
| 233 | 242 | return MakeCallback(isolate, recv, callback, argc, argv, asyncContext); | |
| 234 | 243 | } | |
| Back | FazBrowse Home | New Git URL |
0 commit comments