diff options
author | Tamas Zakor <ztamas@inf.u-szeged.hu> | 2019-07-09 15:40:00 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2021-03-16 15:20:49 +0100 |
commit | c24b83d9f50bb6acaf8be27c0938a8ccf61cd658 (patch) | |
tree | c3618b924ebb94b39c2303fa3bf40f05c7463536 | |
parent | a8bf7956bab59bdc36c9efea9b1ea488071e42b6 (diff) | |
download | qtwebengine-chromium-c24b83d9f50bb6acaf8be27c0938a8ccf61cd658.tar.gz |
Fix iterating when erasing last element from task queue
This patch fixes the iterator debugger assert on Windows.
This bug is introduced by:
https://chromium-review.googlesource.com/c/chromium/src/+/1369780
Change-Id: I9a77dac13d226e09d32b08e394ac1a441672668b
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
-rw-r--r-- | chromium/base/task/sequence_manager/task_queue_impl.cc | 6 |
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++; } |