| Index: src/core/SkWriter32.cpp
|
| diff --git a/src/core/SkWriter32.cpp b/src/core/SkWriter32.cpp
|
| index 76664e72b385f8f35d26f8570187476f99f53552..1e8a10c87caceffa61045fbf1fe0524dfb92ff4e 100644
|
| --- a/src/core/SkWriter32.cpp
|
| +++ b/src/core/SkWriter32.cpp
|
| @@ -67,20 +67,20 @@
|
| return SkAlign4(lenBytes + len + 1);
|
| }
|
|
|
| -const size_t kMinBufferBytes=4096;
|
| -
|
| void SkWriter32::growToAtLeast(size_t size) {
|
| bool wasExternal = (fExternal != NULL) && (fData == fExternal);
|
| - fCapacity = kMinBufferBytes +
|
| - SkTMax(size, fCapacity + (fCapacity >> 1));
|
| -
|
| // cause the buffer to grow
|
| - fInternal.setCountExact(fCapacity);
|
| + fInternal.setCount(size);
|
| fData = fInternal.begin();
|
| if (wasExternal) {
|
| // we were external, so copy in the data
|
| memcpy(fData, fExternal, fUsed);
|
| }
|
| + // Find out the size the buffer grew to, it may be more than we asked for.
|
| + fCapacity = fInternal.reserved();
|
| + // Expand the array so all reserved space is "used", we maintain the
|
| + // amount we have written manually outside the array
|
| + fInternal.setCount(fCapacity);
|
| SkASSERT(fInternal.count() == (int)fCapacity);
|
| SkASSERT(fInternal.reserved() == (int)fCapacity);
|
| }
|
|
|