Do not set the sticky error or stop processing tasks after an uncaught exception
See https://github.com/flutter/flutter/issues/6358
Change-Id: Idf4923e50967b4f8f46c450f226f98b021b2e894
diff --git a/dart_message_handler.cc b/dart_message_handler.cc
index 474cc1f..e898c74 100644
--- a/dart_message_handler.cc
+++ b/dart_message_handler.cc
@@ -83,11 +83,6 @@
}
Dart_SetPausedOnExit(false);
}
- } else if (DartStickyError::IsSet()) {
- // Only process service messages if we have a sticky error set.
- if (Dart_HasServiceMessages()) {
- Dart_HandleServiceMessages();
- }
} else {
// We are processing messages normally.
result = Dart_HandleMessages();
@@ -95,11 +90,9 @@
}
if (error) {
- if (DartStickyError::MaybeSet(result)) {
+ if (Dart_IsError(result)) {
// Remember that we had an uncaught exception error.
isolate_had_uncaught_exception_error_ = true;
- // Mark that we are paused on exit.
- Dart_SetPausedOnExit(true);
}
} else if (!Dart_HasLivePorts()) {
// The isolate has no live ports and would like to exit.
diff --git a/dart_microtask_queue.cc b/dart_microtask_queue.cc
index 182a94a..86f69fc 100644
--- a/dart_microtask_queue.cc
+++ b/dart_microtask_queue.cc
@@ -37,14 +37,7 @@
if (!dart_state.get())
continue;
DartState::Scope dart_scope(dart_state.get());
- if (DartStickyError::IsSet()) {
- break;
- }
- Dart_Handle result = DartInvokeVoid(callback.value());
- // Let the isolate remember any uncaught exceptions.
- if (DartStickyError::MaybeSet(result)) {
- break;
- }
+ DartInvokeVoid(callback.value());
}
}
}