Chromium Code Reviews| Index: src/core/SkPicturePlayback.cpp |
| diff --git a/src/core/SkPicturePlayback.cpp b/src/core/SkPicturePlayback.cpp |
| index 898d37957811392393f4f7e756422e991ab5cc32..1a5e517498f72699ac4bdd88c49d40118ac8ca1a 100644 |
| --- a/src/core/SkPicturePlayback.cpp |
| +++ b/src/core/SkPicturePlayback.cpp |
| @@ -520,15 +520,20 @@ void SkPicturePlayback::parseStreamTag(SkStream* stream, const SkPictInfo& info, |
| case PICT_PICTURE_TAG: { |
| fPictureCount = size; |
| fPictureRefs = SkNEW_ARRAY(SkPicture*, fPictureCount); |
| - bool success; |
| for (int i = 0; i < fPictureCount; i++) { |
| - fPictureRefs[i] = SkNEW_ARGS(SkPicture, (stream, &success, proc)); |
| - // Success can only be false if PICTURE_VERSION does not match |
| + fPictureRefs[i] = SkPicture::CreateFromStream(stream, proc); |
|
robertphillips
2013/06/24 17:22:09
I don't think this comment is true.
scroggo
2013/06/24 18:22:19
How else can it fail?
|
| + // CreateFromStream can only fail if PICTURE_VERSION does not match |
| // (which should never happen from here, since a sub picture will |
| // have the same PICTURE_VERSION as its parent) or if stream->read |
| // returns 0. In the latter case, we have a bug when writing the |
| // picture to begin with, which will be alerted to here. |
| - SkASSERT(success); |
| + SkASSERT(fPictureRefs[i] != NULL); |
| + if (NULL == fPictureRefs[i]) { |
| + // Delete the array |
|
robertphillips
2013/06/24 17:22:09
Don't we need to also loop backwards across the ar
scroggo
2013/06/24 18:22:19
Yes. Done.
|
| + SkDELETE_ARRAY(fPictureRefs); |
| + fPictureCount = 0; |
| + return; |
| + } |
| } |
| } break; |
| case PICT_BUFFER_SIZE_TAG: { |