| Index: Source/bindings/core/v8/V8Binding.h
|
| diff --git a/Source/bindings/core/v8/V8Binding.h b/Source/bindings/core/v8/V8Binding.h
|
| index 14cac2abf7a8479a83b545b4f787cd7f298cb3ff..cd03efc9e5d9b034d155efe03db82440efdef37f 100644
|
| --- a/Source/bindings/core/v8/V8Binding.h
|
| +++ b/Source/bindings/core/v8/V8Binding.h
|
| @@ -952,27 +952,20 @@ PassRefPtr<TraceEvent::ConvertableToTraceFormat> devToolsTraceEventData(Executio
|
|
|
| class V8RethrowTryCatchScope FINAL {
|
| public:
|
| - explicit V8RethrowTryCatchScope(v8::TryCatch& block) : m_block(block) { }
|
| + explicit V8RethrowTryCatchScope(v8::TryCatch& block) : m_block(block), m_isCanceled(false) { }
|
| + void cancel() { m_isCanceled = true; }
|
| ~V8RethrowTryCatchScope()
|
| {
|
| - // ReThrow() is a no-op if no exception has been caught, so always call.
|
| - m_block.ReThrow();
|
| - }
|
| -
|
| -private:
|
| - v8::TryCatch& m_block;
|
| -};
|
| -
|
| -class V8ResetTryCatchScope FINAL {
|
| -public:
|
| - explicit V8ResetTryCatchScope(v8::TryCatch& block) : m_block(block) { }
|
| - ~V8ResetTryCatchScope()
|
| - {
|
| - m_block.Reset();
|
| + if (!m_isCanceled) {
|
| + // ReThrow() is a no-op if no exception has been caught, so always
|
| + // call.
|
| + m_block.ReThrow();
|
| + }
|
| }
|
|
|
| private:
|
| v8::TryCatch& m_block;
|
| + bool m_isCanceled;
|
| };
|
|
|
| } // namespace blink
|
|
|