Index: src/pipe/SkGPipeRead.cpp |
diff --git a/src/pipe/SkGPipeRead.cpp b/src/pipe/SkGPipeRead.cpp |
index 789c3eded82899e23a654c3b81dcd5043d375683..877d380d61444f667ddfe8331cd5960608fe13f7 100644 |
--- a/src/pipe/SkGPipeRead.cpp |
+++ b/src/pipe/SkGPipeRead.cpp |
@@ -691,13 +691,11 @@ static void annotation_rp(SkCanvas*, SkReader32* reader, uint32_t op32, |
SkGPipeState* state) { |
SkPaint* p = state->editPaint(); |
- if (SkToBool(PaintOp_unpackData(op32))) { |
- const size_t size = reader->readU32(); |
- SkAutoMalloc storage(size); |
- |
- reader->read(storage.get(), size); |
- SkOrderedReadBuffer buffer(storage.get(), size); |
+ const size_t size = DrawOp_unpackData(op32); |
+ if (size > 0) { |
+ SkOrderedReadBuffer buffer(reader->skip(size), size); |
p->setAnnotation(SkNEW_ARGS(SkAnnotation, (buffer)))->unref(); |
+ SkASSERT(buffer.offset() == size); |
} else { |
p->setAnnotation(NULL); |
} |