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