SkXPS: handle case where snapSpecial() returns null
authorHal Canary <halcanary@google.com>
Fri, 14 Oct 2016 15:19:43 +0000 (11:19 -0400)
committerSkia Commit-Bot <skia-commit-bot@chromium.org>
Mon, 7 Nov 2016 15:01:53 +0000 (15:01 +0000)
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 <halcanary@google.com>
Reviewed-by: Mike Reed <reed@google.com>
src/core/SkCanvas.cpp

index f4896cb..c42ee86 100644 (file)
@@ -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<SkSpecialImage> 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);
         }