Commit 3ac88832 authored by Raymond Toy's avatar Raymond Toy Committed by Commit Bot

Break connections before removing from active_source_handlers_.

In DeferredTaskHandler::BreakConnections, we want to remove finished
handlers and break the connection.  when a finished handler is removed
from active_source_handlers_, it might be deleted, but we were still
using that to create the connection.  Instead, break the connection
first and then remove it.

Manually ran test from the bug and it passes with this change.  Without
this, it failed right away.

Bug: 1057593
Change-Id: I3c9346a6842f412100d608876adb268befb80470
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2083436
Commit-Queue: Raymond Toy <rtoy@chromium.org>
Reviewed-by: default avatarHongchan Choi <hongchan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#746142}
parent 149eba8a
......@@ -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();
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment