diff options
author | Tamas Zakor <ztamas@inf.u-szeged.hu> | 2019-07-09 15:40:00 +0200 |
---|---|---|
committer | Tamas Zakor <ztamas@inf.u-szeged.hu> | 2019-07-30 14:06:11 +0000 |
commit | 2c5f7dde4f37dca1e5fc6c8b55ccdf5680143cc6 (patch) | |
tree | c496096e72ba61d0ba7673eab8f0dc451e4e1dc3 | |
parent | 85ce77719edbf317485710040982409706c37895 (diff) | |
download | qtwebengine-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.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 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++; } |