summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--chromium/base/task/sequence_manager/task_queue_impl.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/chromium/base/task/sequence_manager/task_queue_impl.cc b/chromium/base/task/sequence_manager/task_queue_impl.cc
index b3a468c847e..6d97f7b1f32 100644
--- a/chromium/base/task/sequence_manager/task_queue_impl.cc
+++ b/chromium/base/task/sequence_manager/task_queue_impl.cc
@@ -1409,9 +1409,13 @@ void TaskQueueImpl::DelayedIncomingQueue::SweepCancelledTasks() {
if (it->task.IsCancelled()) {
if (it->is_high_res)
pending_high_res_tasks_--;
- *it = std::move(queue_.c.back());
+ bool is_last_task_sequence = it->sequence_num == queue_.c.back().sequence_num;
+ if (!is_last_task_sequence)
+ *it = std::move(queue_.c.back());
queue_.c.pop_back();
task_deleted = true;
+ if (is_last_task_sequence)
+ break;
} else {
it++;
}