summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTamas Zakor <ztamas@inf.u-szeged.hu>2019-07-09 15:40:00 +0200
committerTamas Zakor <ztamas@inf.u-szeged.hu>2019-07-30 14:06:11 +0000
commit2c5f7dde4f37dca1e5fc6c8b55ccdf5680143cc6 (patch)
treec496096e72ba61d0ba7673eab8f0dc451e4e1dc3
parent85ce77719edbf317485710040982409706c37895 (diff)
downloadqtwebengine-chromium-2c5f7dde4f37dca1e5fc6c8b55ccdf5680143cc6.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.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 0911fbe350a..8ccb6b7cd44 100644
--- a/chromium/base/task/sequence_manager/task_queue_impl.cc
+++ b/chromium/base/task/sequence_manager/task_queue_impl.cc
@@ -1151,9 +1151,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++;
}