| Index: src/core/SkWriter32.cpp
|
| diff --git a/src/core/SkWriter32.cpp b/src/core/SkWriter32.cpp
|
| index 041e2fef68cff730e1ffccc639210753755cfe6e..516979c3318a43906b95746070e62147740cd4aa 100644
|
| --- a/src/core/SkWriter32.cpp
|
| +++ b/src/core/SkWriter32.cpp
|
| @@ -8,6 +8,7 @@
|
| #include "SkReader32.h"
|
| #include "SkString.h"
|
| #include "SkWriter32.h"
|
| +#include "SkData.h"
|
|
|
| /*
|
| * Strings are stored as: length[4-bytes] + string_data + '\0' + pad_to_mul_4
|
| @@ -83,3 +84,20 @@ void SkWriter32::growToAtLeast(size_t size) {
|
| memcpy(fData, fExternal, fUsed);
|
| }
|
| }
|
| +
|
| +SkData* SkWriter32::detatchAsData() {
|
| + uint8_t* buffer = NULL;
|
| + if ((fExternal != NULL) && (fData == fExternal)) {
|
| + // We need to copy to an allocated buffer before returning.
|
| + buffer = (uint8_t*)sk_malloc_throw(fUsed);
|
| + memcpy(buffer, fData, fUsed);
|
| + } else {
|
| + buffer = fInternal.detach();
|
| + }
|
| + SkData* data = SkData::NewFromMalloc(buffer, fUsed);
|
| + fData = NULL;
|
| + fCapacity = 0;
|
| + fUsed = 0;
|
| + fExternal = NULL;
|
| + return data;
|
| +}
|
|
|