| Index: src/core/SkReadBuffer.cpp
 | 
| diff --git a/src/core/SkReadBuffer.cpp b/src/core/SkReadBuffer.cpp
 | 
| index d016d9c980b5ecbc77fc938a059c0cea11add3dc..c32c7bd658672b3531900f3484363251223f91e1 100644
 | 
| --- a/src/core/SkReadBuffer.cpp
 | 
| +++ b/src/core/SkReadBuffer.cpp
 | 
| @@ -335,3 +335,25 @@ SkFlattenable* SkReadBuffer::readFlattenable(SkFlattenable::Type ft) {
 | 
|      }
 | 
|      return obj;
 | 
|  }
 | 
| +
 | 
| +/**
 | 
| + *  Needs to follow the same pattern as readFlattenable(), but explicitly skip whatever data
 | 
| + *  has been written.
 | 
| + */
 | 
| +void SkReadBuffer::skipFlattenable() {
 | 
| +    if (fFactoryCount > 0) {
 | 
| +        if (0 == fReader.readU32()) {
 | 
| +            return;
 | 
| +        }
 | 
| +    } else if (fFactoryTDArray) {
 | 
| +        if (0 == fReader.readU32()) {
 | 
| +            return;
 | 
| +        }
 | 
| +    } else {
 | 
| +        if (NULL == this->readFunctionPtr()) {
 | 
| +            return;
 | 
| +        }
 | 
| +    }
 | 
| +    uint32_t sizeRecorded = fReader.readU32();
 | 
| +    fReader.skip(sizeRecorded);
 | 
| +}
 | 
| 
 |