Index: src/core/SkReadBuffer.cpp |
diff --git a/src/core/SkReadBuffer.cpp b/src/core/SkReadBuffer.cpp |
index b4bc87529ab5a5b1e1e620d2775f7e7a5f1dedf1..28a88763fc9f89a781dd066fc07c2b32d93f494f 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); |
+} |