| Index: src/core/SkWriter32.cpp
|
| diff --git a/src/core/SkWriter32.cpp b/src/core/SkWriter32.cpp
|
| index 5e89ed655b70e5d83da4df2588704689898b52e6..7285459c3d1e5767fff762d0bb38a4a6f848a2a0 100644
|
| --- a/src/core/SkWriter32.cpp
|
| +++ b/src/core/SkWriter32.cpp
|
| @@ -66,3 +66,21 @@ size_t SkWriter32::WriteStringSize(const char* str, size_t len) {
|
| // add 1 since we also write a terminating 0
|
| return SkAlign4(lenBytes + len + 1);
|
| }
|
| +
|
| +void SkWriter32::growToAtLeast(size_t size) {
|
| + bool wasExternal = (fExternal != NULL) && (fData == fExternal);
|
| + // cause the buffer to grow
|
| + 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() == fCapacity);
|
| + SkASSERT(fInternal.reserved() == fCapacity);
|
| +}
|
|
|