| Index: third_party/WebKit/Source/wtf/TerminatedArrayBuilder.h
|
| diff --git a/third_party/WebKit/Source/wtf/TerminatedArrayBuilder.h b/third_party/WebKit/Source/wtf/TerminatedArrayBuilder.h
|
| index b768a74e93cdf2047d6cbddf9d6e0cd764aaf3bb..eec013109a064e12c8b59c5da88753b02d5039d4 100644
|
| --- a/third_party/WebKit/Source/wtf/TerminatedArrayBuilder.h
|
| +++ b/third_party/WebKit/Source/wtf/TerminatedArrayBuilder.h
|
| @@ -21,6 +21,7 @@ public:
|
| if (!m_array)
|
| return;
|
| m_capacity = m_count = m_array->size();
|
| + ASSERT(m_array->at(m_count - 1).isLastInArray());
|
| }
|
|
|
| void grow(size_t count)
|
| @@ -31,11 +32,13 @@ public:
|
| ASSERT(!m_capacity);
|
| m_capacity = count;
|
| m_array = ArrayType<T>::Allocator::create(m_capacity);
|
| - return;
|
| + } else {
|
| + ASSERT(m_array->at(m_count - 1).isLastInArray());
|
| + m_capacity += count;
|
| + m_array = ArrayType<T>::Allocator::resize(m_array.release(), m_capacity);
|
| + m_array->at(m_count - 1).setLastInArray(false);
|
| }
|
| - m_capacity += count;
|
| - m_array = ArrayType<T>::Allocator::resize(m_array.release(), m_capacity);
|
| - m_array->at(m_count - 1).setLastInArray(false);
|
| + m_array->at(m_capacity - 1).setLastInArray(true);
|
| }
|
|
|
| void append(const T& item)
|
| @@ -43,13 +46,13 @@ public:
|
| RELEASE_ASSERT(m_count < m_capacity);
|
| ASSERT(!item.isLastInArray());
|
| m_array->at(m_count++) = item;
|
| + if (m_count == m_capacity)
|
| + m_array->at(m_capacity - 1).setLastInArray(true);
|
| }
|
|
|
| typename ArrayType<T>::Allocator::PassPtr release()
|
| {
|
| RELEASE_ASSERT(m_count == m_capacity);
|
| - if (m_array)
|
| - m_array->at(m_count - 1).setLastInArray(true);
|
| assertValid();
|
| return m_array.release();
|
| }
|
|
|