| Index: fuzz/fuzz.cpp | 
| diff --git a/fuzz/fuzz.cpp b/fuzz/fuzz.cpp | 
| index d2dc787dbefb623da521aff511f3eda7de3742c7..ec47aa285f7d133e209ebc0a127b4e189cf710e6 100644 | 
| --- a/fuzz/fuzz.cpp | 
| +++ b/fuzz/fuzz.cpp | 
| @@ -34,11 +34,11 @@ static int printUsage(const char* name) { | 
| } | 
| static uint8_t calculate_option(SkData*); | 
|  | 
| -static int fuzz_api(SkData*); | 
| -static int fuzz_img(SkData*, uint8_t, uint8_t); | 
| -static int fuzz_skp(SkData*); | 
| -static int fuzz_icc(SkData*); | 
| -static int fuzz_color_deserialize(SkData*); | 
| +static int fuzz_api(sk_sp<SkData>); | 
| +static int fuzz_img(sk_sp<SkData>, uint8_t, uint8_t); | 
| +static int fuzz_skp(sk_sp<SkData>); | 
| +static int fuzz_icc(sk_sp<SkData>); | 
| +static int fuzz_color_deserialize(sk_sp<SkData>); | 
|  | 
| int main(int argc, char** argv) { | 
| SkCommandLineFlags::Parse(argc, argv); | 
| @@ -54,21 +54,21 @@ int main(int argc, char** argv) { | 
|  | 
| if (!FLAGS_type.isEmpty()) { | 
| switch (FLAGS_type[0][0]) { | 
| -            case 'a': return fuzz_api(bytes.get()); | 
| +            case 'a': return fuzz_api(bytes); | 
|  | 
| -            case 'c': return fuzz_color_deserialize(bytes.get()); | 
| +            case 'c': return fuzz_color_deserialize(bytes); | 
|  | 
| case 'i': | 
| if (FLAGS_type[0][1] == 'c') { //icc | 
| -                    return fuzz_icc(bytes.get()); | 
| +                    return fuzz_icc(bytes); | 
| } | 
| // We only allow one degree of freedom to avoid a search space explosion for afl-fuzz. | 
| if (FLAGS_type[0][6] == 's') { // image_scale | 
| -                    return fuzz_img(bytes.get(), option, 0); | 
| +                    return fuzz_img(bytes, option, 0); | 
| } | 
| // image_mode | 
| -                return fuzz_img(bytes.get(), 0, option); | 
| -            case 's': return fuzz_skp(bytes.get()); | 
| +                return fuzz_img(bytes, 0, option); | 
| +            case 's': return fuzz_skp(bytes); | 
| } | 
| } | 
| return printUsage(argv[0]); | 
| @@ -88,7 +88,7 @@ static uint8_t calculate_option(SkData* bytes) { | 
| return total; | 
| } | 
|  | 
| -int fuzz_api(SkData* bytes) { | 
| +int fuzz_api(sk_sp<SkData> bytes) { | 
| const char* name = FLAGS_name.isEmpty() ? "" : FLAGS_name[0]; | 
|  | 
| for (auto r = SkTRegistry<Fuzzable>::Head(); r; r = r->next()) { | 
| @@ -117,7 +117,7 @@ static void dump_png(SkBitmap bitmap) { | 
| } | 
| } | 
|  | 
| -int fuzz_img(SkData* bytes, uint8_t scale, uint8_t mode) { | 
| +int fuzz_img(sk_sp<SkData> bytes, uint8_t scale, uint8_t mode) { | 
| // We can scale 1x, 2x, 4x, 8x, 16x | 
| scale = scale % 5; | 
| float fscale = (float)pow(2.0f, scale); | 
| @@ -360,7 +360,7 @@ int fuzz_img(SkData* bytes, uint8_t scale, uint8_t mode) { | 
| return 0; | 
| } | 
|  | 
| -int fuzz_skp(SkData* bytes) { | 
| +int fuzz_skp(sk_sp<SkData> bytes) { | 
| SkMemoryStream stream(bytes); | 
| SkDebugf("Decoding\n"); | 
| sk_sp<SkPicture> pic(SkPicture::MakeFromStream(&stream)); | 
| @@ -381,7 +381,7 @@ int fuzz_skp(SkData* bytes) { | 
| return 0; | 
| } | 
|  | 
| -int fuzz_icc(SkData* bytes) { | 
| +int fuzz_icc(sk_sp<SkData> bytes) { | 
| sk_sp<SkColorSpace> space(SkColorSpace::NewICC(bytes->data(), bytes->size())); | 
| if (!space) { | 
| SkDebugf("[terminated] Couldn't decode ICC.\n"); | 
| @@ -391,7 +391,7 @@ int fuzz_icc(SkData* bytes) { | 
| return 0; | 
| } | 
|  | 
| -int fuzz_color_deserialize(SkData* bytes) { | 
| +int fuzz_color_deserialize(sk_sp<SkData> bytes) { | 
| sk_sp<SkColorSpace> space(SkColorSpace::Deserialize(bytes->data(), bytes->size())); | 
| if (!space) { | 
| SkDebugf("[terminated] Couldn't deserialize Colorspace.\n"); | 
| @@ -401,7 +401,7 @@ int fuzz_color_deserialize(SkData* bytes) { | 
| return 0; | 
| } | 
|  | 
| -Fuzz::Fuzz(SkData* bytes) : fBytes(SkSafeRef(bytes)), fNextByte(0) {} | 
| +Fuzz::Fuzz(sk_sp<SkData> bytes) : fBytes(bytes), fNextByte(0) {} | 
|  | 
| void Fuzz::signalBug   () { SkDebugf("Signal bug\n"); raise(SIGSEGV); } | 
| void Fuzz::signalBoring() { SkDebugf("Signal boring\n"); exit(0); } | 
|  |