| 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);
 | 
|      }
 | 
| 
 |