From: Hal Canary Date: Fri, 14 Oct 2016 15:19:43 +0000 (-0400) Subject: SkXPS: handle case where snapSpecial() returns null X-Git-Tag: accepted/tizen/5.0/unified/20181102.025319~73^2~231 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=43513543de102500121afb9222dfdd8f35c50ca7;p=platform%2Fupstream%2FlibSkiaSharp.git SkXPS: handle case where snapSpecial() returns null GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3415 Change-Id: I91bfbeb5751d5fd87e0361255ccb0350c3f3c850 Reviewed-on: https://skia-review.googlesource.com/3415 Commit-Queue: Hal Canary Reviewed-by: Mike Reed --- diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp index f4896cb..c42ee86 100644 --- a/src/core/SkCanvas.cpp +++ b/src/core/SkCanvas.cpp @@ -1415,8 +1415,9 @@ void SkCanvas::internalDrawDevice(SkBaseDevice* srcDev, int x, int y, const SkPa paint = &looper.paint(); SkImageFilter* filter = paint->getImageFilter(); SkIPoint pos = { x - iter.getX(), y - iter.getY() }; - if (filter) { - dstDev->drawSpecial(iter, srcDev->snapSpecial().get(), pos.x(), pos.y(), *paint); + sk_sp specialImage; + if (filter && (specialImage = srcDev->snapSpecial())) { + dstDev->drawSpecial(iter, specialImage.get(), pos.x(), pos.y(), *paint); } else { dstDev->drawDevice(iter, srcDev, pos.x(), pos.y(), *paint); }