summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTamas Zakor <ztamas@inf.u-szeged.hu>2019-07-09 15:40:00 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2019-09-04 14:31:28 +0200
commita66123b396be1125c9deca3d9d53af981369a427 (patch)
tree147b809498f166c07c7838e6eb3f6b13012ce9b4
parent65fb0ba54f11283dab07b495f758ec9e655af631 (diff)
downloadqtwebengine-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.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 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++;
}