Index: src/core/SkOrderedReadBuffer.cpp |
diff --git a/src/core/SkOrderedReadBuffer.cpp b/src/core/SkOrderedReadBuffer.cpp |
index 9d991949084e5b9586d57baeaadf72363eb3e3ef..d535fefc446fa87688eaae1002e8d85cb479babd 100644 |
--- a/src/core/SkOrderedReadBuffer.cpp |
+++ b/src/core/SkOrderedReadBuffer.cpp |
@@ -299,7 +299,12 @@ SkFlattenable* SkOrderedReadBuffer::readFlattenable() { |
uint32_t sizeRecorded = fReader.readU32(); |
if (factory) { |
uint32_t offset = fReader.offset(); |
+ fError = false; // Reset error state before calling factory function |
obj = (*factory)(*this); |
+ if (fError) { |
scroggo
2013/08/21 23:56:00
From here, do we assume the rest of this stream is
sugoi1
2013/08/22 14:26:23
For now, since we don't what kind of error we hit,
|
+ delete obj; |
+ obj = NULL; |
+ } |
// check that we read the amount we expected |
uint32_t sizeRead = fReader.offset() - offset; |
if (sizeRecorded != sizeRead) { |