| Index: src/pdf/SkPDFFont.cpp
 | 
| diff --git a/src/pdf/SkPDFFont.cpp b/src/pdf/SkPDFFont.cpp
 | 
| index 2fc408efc7fa735cf73d7b7df9caf40a81341cd9..0481963029f81781c71129a6b3b9431c5f1359df 100644
 | 
| --- a/src/pdf/SkPDFFont.cpp
 | 
| +++ b/src/pdf/SkPDFFont.cpp
 | 
| @@ -152,8 +152,8 @@ int8_t hexToBin(uint8_t c) {
 | 
|      return -1;
 | 
|  }
 | 
|  
 | 
| -static SkData* handle_type1_stream(SkStream* srcStream, size_t* headerLen,
 | 
| -                                   size_t* dataLen, size_t* trailerLen) {
 | 
| +static sk_sp<SkData> handle_type1_stream(SkStream* srcStream, size_t* headerLen,
 | 
| +                                         size_t* dataLen, size_t* trailerLen) {
 | 
|      // srcStream may be backed by a file or a unseekable fd, so we may not be
 | 
|      // able to use skip(), rewind(), or getMemoryBase().  read()ing through
 | 
|      // the input only once is doable, but very ugly. Furthermore, it'd be nice
 | 
| @@ -161,7 +161,7 @@ static SkData* handle_type1_stream(SkStream* srcStream, size_t* headerLen,
 | 
|      // Make as few copies as possible given these constraints.
 | 
|      SkDynamicMemoryWStream dynamicStream;
 | 
|      std::unique_ptr<SkMemoryStream> staticStream;
 | 
| -    SkData* data = nullptr;
 | 
| +    sk_sp<SkData> data;
 | 
|      const uint8_t* src;
 | 
|      size_t srcLen;
 | 
|      if ((srcLen = srcStream->getLength()) > 0) {
 | 
| @@ -191,22 +191,18 @@ static SkData* handle_type1_stream(SkStream* srcStream, size_t* headerLen,
 | 
|          }
 | 
|          amount = 0;
 | 
|          dynamicStream.write(&amount, 1);  // nullptr terminator.
 | 
| -        data = dynamicStream.copyToData();
 | 
| +        data.reset(dynamicStream.copyToData());
 | 
|          src = data->bytes();
 | 
|          srcLen = data->size() - 1;
 | 
|      }
 | 
|  
 | 
| -    // this handles releasing the data we may have gotten from dynamicStream.
 | 
| -    // if data is null, it is a no-op
 | 
| -    SkAutoDataUnref aud(data);
 | 
| -
 | 
|      if (parsePFB(src, srcLen, headerLen, dataLen, trailerLen)) {
 | 
|          static const int kPFBSectionHeaderLength = 6;
 | 
|          const size_t length = *headerLen + *dataLen + *trailerLen;
 | 
|          SkASSERT(length > 0);
 | 
|          SkASSERT(length + (2 * kPFBSectionHeaderLength) <= srcLen);
 | 
|  
 | 
| -        SkData* data = SkData::NewUninitialized(length);
 | 
| +        sk_sp<SkData> data(SkData::MakeUninitialized(length));
 | 
|  
 | 
|          const uint8_t* const srcHeader = src + kPFBSectionHeaderLength;
 | 
|          // There is a six-byte section header before header and data
 | 
| @@ -265,7 +261,7 @@ static SkData* handle_type1_stream(SkStream* srcStream, size_t* headerLen,
 | 
|          uint8_t* const resultTrailer = &(buffer[SkToInt(*headerLen + outputOffset)]);
 | 
|          memcpy(resultTrailer, src + *headerLen + hexDataLen, *trailerLen);
 | 
|  
 | 
| -        return SkData::NewFromMalloc(buffer.release(), length);
 | 
| +        return SkData::MakeFromMalloc(buffer.release(), length);
 | 
|      }
 | 
|      return nullptr;
 | 
|  }
 | 
| @@ -1191,8 +1187,7 @@ bool SkPDFType1Font::addFontDescriptor(int16_t defaultWidth) {
 | 
|      if (!rawFontData || 0 == rawFontData->getLength()) {
 | 
|          return false;
 | 
|      }
 | 
| -    sk_sp<SkData> fontData(handle_type1_stream(rawFontData.get(), &header,
 | 
| -                                                      &data, &trailer));
 | 
| +    sk_sp<SkData> fontData(handle_type1_stream(rawFontData.get(), &header, &data, &trailer));
 | 
|      if (fontData.get() == nullptr) {
 | 
|          return false;
 | 
|      }
 | 
| 
 |