| Index: third_party/WebKit/Source/wtf/ArrayBufferBuilder.cpp
|
| diff --git a/third_party/WebKit/Source/wtf/ArrayBufferBuilder.cpp b/third_party/WebKit/Source/wtf/ArrayBufferBuilder.cpp
|
| index 78a7447e23b99407fa47bc313b3a1b68d4739533..90eb8b7ffb88fb93d34e389f9f336035a6bc7b05 100644
|
| --- a/third_party/WebKit/Source/wtf/ArrayBufferBuilder.cpp
|
| +++ b/third_party/WebKit/Source/wtf/ArrayBufferBuilder.cpp
|
| @@ -42,11 +42,12 @@ ArrayBufferBuilder::ArrayBufferBuilder()
|
| : m_bytesUsed(0)
|
| , m_variableCapacity(true)
|
| {
|
| - m_buffer = ArrayBuffer::create(defaultBufferCapacity, 1);
|
| + m_buffer = ArrayBuffer::createOrNull(defaultBufferCapacity, 1);
|
| }
|
|
|
| bool ArrayBufferBuilder::expandCapacity(unsigned sizeToIncrease)
|
| {
|
| + ASSERT(isValid());
|
| unsigned currentBufferSize = m_buffer->byteLength();
|
|
|
| // If the size of the buffer exceeds max of unsigned, it can't be grown any
|
| @@ -64,7 +65,7 @@ bool ArrayBufferBuilder::expandCapacity(unsigned sizeToIncrease)
|
| newBufferSize = exponentialGrowthNewBufferSize;
|
|
|
| // Copy existing data in current buffer to new buffer.
|
| - RefPtr<ArrayBuffer> newBuffer = ArrayBuffer::create(newBufferSize, 1);
|
| + RefPtr<ArrayBuffer> newBuffer = ArrayBuffer::createOrNull(newBufferSize, 1);
|
| if (!newBuffer)
|
| return false;
|
|
|
| @@ -75,6 +76,7 @@ bool ArrayBufferBuilder::expandCapacity(unsigned sizeToIncrease)
|
|
|
| unsigned ArrayBufferBuilder::append(const char* data, unsigned length)
|
| {
|
| + ASSERT(isValid());
|
| ASSERT(length > 0);
|
|
|
| unsigned currentBufferSize = m_buffer->byteLength();
|
| @@ -102,24 +104,33 @@ unsigned ArrayBufferBuilder::append(const char* data, unsigned length)
|
|
|
| PassRefPtr<ArrayBuffer> ArrayBufferBuilder::toArrayBuffer()
|
| {
|
| + ASSERT(isValid());
|
| // Fully used. Return m_buffer as-is.
|
| if (m_buffer->byteLength() == m_bytesUsed)
|
| return m_buffer;
|
|
|
| - return m_buffer->slice(0, m_bytesUsed);
|
| + RefPtr<ArrayBuffer> tmp = m_buffer->sliceOrNull(0, m_bytesUsed);
|
| + if (tmp)
|
| + return tmp;
|
| + return m_buffer;
|
| }
|
|
|
| String ArrayBufferBuilder::toString()
|
| {
|
| + ASSERT(isValid());
|
| return String(static_cast<const char*>(m_buffer->data()), m_bytesUsed);
|
| }
|
|
|
| void ArrayBufferBuilder::shrinkToFit()
|
| {
|
| + ASSERT(isValid());
|
| ASSERT(m_bytesUsed <= m_buffer->byteLength());
|
|
|
| - if (m_buffer->byteLength() > m_bytesUsed)
|
| - m_buffer = m_buffer->slice(0, m_bytesUsed);
|
| + if (m_buffer->byteLength() > m_bytesUsed) {
|
| + RefPtr<ArrayBuffer> tmp = m_buffer->sliceOrNull(0, m_bytesUsed);
|
| + if (tmp)
|
| + m_buffer = tmp;
|
| + }
|
| }
|
|
|
| } // namespace WTF
|
|
|