Index: src/core/SkValidatingReadBuffer.cpp |
diff --git a/src/core/SkValidatingReadBuffer.cpp b/src/core/SkValidatingReadBuffer.cpp |
index 0ce8bf9c590bd033b453f85e27204c6545ff22ac..ad4b6c409e6a0adca7c85b87c69a59089ac76779 100644 |
--- a/src/core/SkValidatingReadBuffer.cpp |
+++ b/src/core/SkValidatingReadBuffer.cpp |
@@ -222,14 +222,20 @@ |
return this->validate((size <= SK_MaxU32) && fReader.isAvailable(static_cast<uint32_t>(size))); |
} |
-SkFlattenable* SkValidatingReadBuffer::readFlattenable() { |
+SkFlattenable* SkValidatingReadBuffer::readFlattenable(SkFlattenable::Type type) { |
SkString name; |
this->readString(&name); |
if (fError) { |
return nullptr; |
} |
+ // Is this the type we wanted ? |
const char* cname = name.c_str(); |
+ SkFlattenable::Type baseType; |
+ if (!SkFlattenable::NameToType(cname, &baseType) || (baseType != type)) { |
+ return nullptr; |
+ } |
+ |
SkFlattenable::Factory factory = SkFlattenable::NameToFactory(cname); |
if (nullptr == factory) { |
return nullptr; // writer failed to give us the flattenable |