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> | 2019-09-04 14:31:28 +0200 |
commit | a66123b396be1125c9deca3d9d53af981369a427 (patch) | |
tree | 147b809498f166c07c7838e6eb3f6b13012ce9b4 | |
parent | 65fb0ba54f11283dab07b495f758ec9e655af631 (diff) | |
download | qtwebengine-chromium-a66123b396be1125c9deca3d9d53af981369a427.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 b9a93a4ffe5..b3a8c962a81 100644 --- a/chromium/base/task/sequence_manager/task_queue_impl.cc +++ b/chromium/base/task/sequence_manager/task_queue_impl.cc @@ -1356,9 +1356,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++; } |