diff --git a/shell/platform/fuchsia/dart_runner/dart_component_controller.cc b/shell/platform/fuchsia/dart_runner/dart_component_controller.cc index 3680a875d1ec4..dd9b16bd65aee 100644 --- a/shell/platform/fuchsia/dart_runner/dart_component_controller.cc +++ b/shell/platform/fuchsia/dart_runner/dart_component_controller.cc @@ -440,7 +440,11 @@ bool DartComponentController::Main() { void DartComponentController::Kill() { if (Dart_CurrentIsolate()) { - tonic::DartMicrotaskQueue::GetForCurrentThread()->Destroy(); + tonic::DartMicrotaskQueue* queue = + tonic::DartMicrotaskQueue::GetForCurrentThread(); + if (queue) { + queue->Destroy(); + } loop_->Quit(); diff --git a/shell/platform/fuchsia/dart_runner/dart_runner.cc b/shell/platform/fuchsia/dart_runner/dart_runner.cc index 415d2885c60c2..2a87776cb4d51 100644 --- a/shell/platform/fuchsia/dart_runner/dart_runner.cc +++ b/shell/platform/fuchsia/dart_runner/dart_runner.cc @@ -83,7 +83,12 @@ void IsolateShutdownCallback(void* isolate_group_data, void* isolate_data) { auto dispatcher = async_get_default_dispatcher(); auto loop = async_loop_from_dispatcher(dispatcher); if (loop) { - tonic::DartMicrotaskQueue::GetForCurrentThread()->Destroy(); + tonic::DartMicrotaskQueue* queue = + tonic::DartMicrotaskQueue::GetForCurrentThread(); + if (queue) { + queue->Destroy(); + } + async_loop_quit(loop); }