Commit 77aa9349 authored by sigbjornf@opera.com's avatar sigbjornf@opera.com

Handle a terminating context in messageHandlerinWorker().

If execution is terminated while constructing the ErrorEvent representing
the incoming v8::Message, do not attempt to report the exception.

R=haraken@chromium.org
BUG=393273

Review URL: https://codereview.chromium.org/405933002

git-svn-id: svn://svn.chromium.org/blink/trunk@178929 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 2da86541
...@@ -226,8 +226,12 @@ static void messageHandlerInWorker(v8::Handle<v8::Message> message, v8::Handle<v ...@@ -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)); RefPtrWillBeRawPtr<ErrorEvent> event = ErrorEvent::create(errorMessage, sourceURL, message->GetLineNumber(), message->GetStartColumn() + 1, &DOMWrapperWorld::current(isolate));
AccessControlStatus corsStatus = message->IsSharedCrossOrigin() ? SharableCrossOrigin : NotSharableCrossOrigin; AccessControlStatus corsStatus = message->IsSharedCrossOrigin() ? SharableCrossOrigin : NotSharableCrossOrigin;
V8ErrorHandler::storeExceptionOnErrorEventWrapper(event.get(), data, scriptState->context()->Global(), isolate); // If execution termination has been triggered as part of constructing
context->reportException(event.release(), nullptr, corsStatus); // 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; isReportingException = false;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment