| Index: src/api.cc
|
| diff --git a/src/api.cc b/src/api.cc
|
| index 304d84ffcf872d6163a19f8a38ce9e7f8df8eaf3..7a72bc2fb2c1e3413d9e9517af554ee0b64aab9e 100644
|
| --- a/src/api.cc
|
| +++ b/src/api.cc
|
| @@ -1832,6 +1832,12 @@ v8::TryCatch::~TryCatch() {
|
| reinterpret_cast<Isolate*>(isolate_)->ThrowException(exc);
|
| ASSERT(!isolate_->thread_local_top()->rethrowing_message_);
|
| } else {
|
| + if (HasCaught() && isolate_->has_scheduled_exception()) {
|
| + // If an exception was caught but is still scheduled because no API call
|
| + // promoted it, then it is canceled to prevent it from being propagated.
|
| + // Note that this will not cancel termination exceptions.
|
| + isolate_->CancelScheduledExceptionFromTryCatch(this);
|
| + }
|
| isolate_->UnregisterTryCatchHandler(this);
|
| v8::internal::SimulatorStack::UnregisterCTryCatch();
|
| }
|
|
|