| Index: src/core/SkMatrix.cpp | 
| diff --git a/src/core/SkMatrix.cpp b/src/core/SkMatrix.cpp | 
| index 5bcb35b298874088004f5c39fba7133e85a0c323..cd7bcea176486de32b97d2a00a1a0afb1de97b64 100644 | 
| --- a/src/core/SkMatrix.cpp | 
| +++ b/src/core/SkMatrix.cpp | 
| @@ -1921,20 +1921,25 @@ const SkMatrix& SkMatrix::InvalidMatrix() { | 
|  | 
| /////////////////////////////////////////////////////////////////////////////// | 
|  | 
| -uint32_t SkMatrix::writeToMemory(void* buffer) const { | 
| +size_t SkMatrix::writeToMemory(void* buffer) const { | 
| // TODO write less for simple matrices | 
| +    static const size_t sizeInMemory = 9 * sizeof(SkScalar); | 
| if (buffer) { | 
| -        memcpy(buffer, fMat, 9 * sizeof(SkScalar)); | 
| +        memcpy(buffer, fMat, sizeInMemory); | 
| } | 
| -    return 9 * sizeof(SkScalar); | 
| +    return sizeInMemory; | 
| } | 
|  | 
| -uint32_t SkMatrix::readFromMemory(const void* buffer) { | 
| +size_t SkMatrix::readFromMemory(const void* buffer, size_t length) { | 
| +    static const size_t sizeInMemory = 9 * sizeof(SkScalar); | 
| +    if (length < sizeInMemory) { | 
| +        return 0; | 
| +    } | 
| if (buffer) { | 
| -        memcpy(fMat, buffer, 9 * sizeof(SkScalar)); | 
| +        memcpy(fMat, buffer, sizeInMemory); | 
| this->setTypeMask(kUnknown_Mask); | 
| } | 
| -    return 9 * sizeof(SkScalar); | 
| +    return sizeInMemory; | 
| } | 
|  | 
| #ifdef SK_DEVELOPER | 
|  |