Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2943)

Unified Diff: cc/base/list_container.cc

Issue 1304053016: Mac Overlays: Allow multiple overlays with sandwich strategy (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@snapshot
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: cc/base/list_container.cc
diff --git a/cc/base/list_container.cc b/cc/base/list_container.cc
index 65e28358b42483c734bc746ad7629739b983d2b8..80b341f78b6e8d119bf9150474a39e38d618a96d 100644
--- a/cc/base/list_container.cc
+++ b/cc/base/list_container.cc
@@ -171,9 +171,13 @@ class ListContainerBase::ListContainerCharAllocator {
--size_;
}
- void Erase(PositionInListContainerCharAllocator position) {
- DCHECK_EQ(this, position.ptr_to_container);
- storage_[position.vector_index]->Erase(position.item_iterator);
+ void Erase(PositionInListContainerCharAllocator* position) {
+ DCHECK_EQ(this, position->ptr_to_container);
+ InnerList* list = storage_[position->vector_index];
+ char* item_iterator = position->item_iterator;
+ if (item_iterator == list->LastElement())
+ position->Increment();
+ list->Erase(item_iterator);
// TODO(weiliangc): Free the InnerList if it is empty.
--size_;
}
@@ -355,7 +359,7 @@ void ListContainerBase::RemoveLast() {
}
void ListContainerBase::EraseAndInvalidateAllPointers(
- ListContainerBase::Iterator position) {
+ ListContainerBase::Iterator* position) {
data_->Erase(position);
}

Powered by Google App Engine
This is Rietveld 408576698