| 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);
|
| }
|
|
|
|
|