summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--chromium/third_party/blink/renderer/modules/webaudio/deferred_task_handler.cc4
1 files changed, 3 insertions, 1 deletions
diff --git a/chromium/third_party/blink/renderer/modules/webaudio/deferred_task_handler.cc b/chromium/third_party/blink/renderer/modules/webaudio/deferred_task_handler.cc
index 9fd38f0dde7..fca70458c5a 100644
--- a/chromium/third_party/blink/renderer/modules/webaudio/deferred_task_handler.cc
+++ b/chromium/third_party/blink/renderer/modules/webaudio/deferred_task_handler.cc
@@ -78,8 +78,10 @@ void DeferredTaskHandler::BreakConnections() {
wtf_size_t size = finished_source_handlers_.size();
if (size > 0) {
for (auto* finished : finished_source_handlers_) {
- active_source_handlers_.erase(finished);
+ // Break connection first and then remove from the list because that can
+ // cause the handler to be deleted.
finished->BreakConnectionWithLock();
+ active_source_handlers_.erase(finished);
}
finished_source_handlers_.clear();
}