From: bungeman Date: Thu, 2 Oct 2014 20:39:00 +0000 (-0700) Subject: Handle getMemoryBase returning NULL in WriteTask. X-Git-Tag: accepted/tizen/5.0/unified/20181102.025319~5614 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d51ce44d18cb28df568f817b05478d24ef21c1a7;p=platform%2Fupstream%2FlibSkiaSharp.git Handle getMemoryBase returning NULL in WriteTask. DM::WriteTask::fData was changed from a data to a stream in "SkData to SkStreamAsset to avoid unneeded copying" https://skia.googlesource.com/skia/+/a4c6094177ebde18c706cbcfbd2013d0a088e0ee However, DM::WriteTask::draw was not updated to handle this, resulting in segfaults when trying to write out PDF files. Review URL: https://codereview.chromium.org/627473002 --- diff --git a/dm/DMWriteTask.cpp b/dm/DMWriteTask.cpp index 08feb98..7d0df94 100644 --- a/dm/DMWriteTask.cpp +++ b/dm/DMWriteTask.cpp @@ -64,11 +64,9 @@ void WriteTask::makeDirOrFail(SkString dir) { } } -static SkString get_md5(const void* ptr, size_t len) { - SkMD5 hasher; - hasher.write(ptr, len); +static SkString get_md5_string(SkMD5* hasher) { SkMD5::Digest digest; - hasher.finish(digest); + hasher->finish(digest); SkString md5; for (int i = 0; i < 16; i++) { @@ -77,6 +75,18 @@ static SkString get_md5(const void* ptr, size_t len) { return md5; } +static SkString get_md5(const void* ptr, size_t len) { + SkMD5 hasher; + hasher.write(ptr, len); + return get_md5_string(&hasher); +} + +static SkString get_md5(SkStreamAsset* stream) { + SkMD5 hasher; + hasher.writeStream(stream, stream->getLength()); + return get_md5_string(&hasher); +} + struct JsonData { SkString name; // E.g. "ninepatch-stretch", "desk-gws_skp" SkString config; // "gpu", "8888" @@ -91,7 +101,7 @@ void WriteTask::draw() { SkString md5; { SkAutoLockPixels lock(fBitmap); - md5 = fData ? get_md5(fData->getMemoryBase(), fData->getLength()) + md5 = fData ? get_md5(fData) : get_md5(fBitmap.getPixels(), fBitmap.getSize()); }