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); |
+} |