Index: Source/bindings/core/v8/V8Initializer.cpp |
diff --git a/Source/bindings/core/v8/V8Initializer.cpp b/Source/bindings/core/v8/V8Initializer.cpp |
index f08629547e2e8a0a59e569ee72f0f92c4bda4573..ece3a00c2c84ec2b0b17f6dcae4ae8c4c9e236b1 100644 |
--- a/Source/bindings/core/v8/V8Initializer.cpp |
+++ b/Source/bindings/core/v8/V8Initializer.cpp |
@@ -226,8 +226,12 @@ static void messageHandlerInWorker(v8::Handle<v8::Message> message, v8::Handle<v |
RefPtrWillBeRawPtr<ErrorEvent> event = ErrorEvent::create(errorMessage, sourceURL, message->GetLineNumber(), message->GetStartColumn() + 1, &DOMWrapperWorld::current(isolate)); |
AccessControlStatus corsStatus = message->IsSharedCrossOrigin() ? SharableCrossOrigin : NotSharableCrossOrigin; |
- V8ErrorHandler::storeExceptionOnErrorEventWrapper(event.get(), data, scriptState->context()->Global(), isolate); |
- context->reportException(event.release(), nullptr, corsStatus); |
+ // If execution termination has been triggered as part of constructing |
+ // the error event from the v8::Message, quietly leave. |
+ if (!v8::V8::IsExecutionTerminating(isolate)) { |
+ V8ErrorHandler::storeExceptionOnErrorEventWrapper(event.get(), data, scriptState->context()->Global(), isolate); |
+ context->reportException(event.release(), nullptr, corsStatus); |
+ } |
} |
isReportingException = false; |