Chromium Code Reviews| Index: src/core/SkPicture.cpp |
| diff --git a/src/core/SkPicture.cpp b/src/core/SkPicture.cpp |
| index 1df56a52d784bbd85ca1dc58d2651b021bb7d78e..d4db196cb66601f96e2376909fae52068992b7bc 100644 |
| --- a/src/core/SkPicture.cpp |
| +++ b/src/core/SkPicture.cpp |
| @@ -266,11 +266,20 @@ void SkPicture::draw(SkCanvas* surface, SkDrawPictureCallback* callback) { |
| #include "SkStream.h" |
| +static const char kMagic[] = { 's', 'k', 'i', 'a', 'p', 'i', 'c', 't' }; |
| + |
| bool SkPicture::StreamIsSKP(SkStream* stream, SkPictInfo* pInfo) { |
| if (NULL == stream) { |
| return false; |
| } |
| + // Check magic bytes. |
| + uint8_t magic[SK_ARRAY_COUNT(kMagic)]; |
|
reed1
2013/10/16 15:34:41
could be sizeof or SK_ARRAY_COUNT. I find the form
|
| + stream->read(magic, SK_ARRAY_COUNT(kMagic)); |
| + if (0 != memcmp(magic, kMagic, SK_ARRAY_COUNT(kMagic))) { |
| + return false; |
| + } |
| + |
| SkPictInfo info; |
| if (!stream->read(&info, sizeof(SkPictInfo))) { |
| return false; |
| @@ -341,6 +350,10 @@ void SkPicture::serialize(SkWStream* stream, EncodeBitmap encoder) const { |
| info.fFlags |= SkPictInfo::kPtrIs64Bit_Flag; |
| } |
| + // Write 8 magic bytes to ID this file format. |
| + SkASSERT(SK_ARRAY_COUNT(kMagic) == 8); |
| + stream->write(kMagic, SK_ARRAY_COUNT(kMagic)); |
| + |
| stream->write(&info, sizeof(info)); |
| if (playback) { |
| stream->writeBool(true); |