diff --git a/gn/tests.gni b/gn/tests.gni index e086e0a715..124be390cf 100644 --- a/gn/tests.gni +++ b/gn/tests.gni @@ -198,6 +198,7 @@ tests_sources = [ "$_tests/SkBase64Test.cpp", "$_tests/SkBlend_optsTest.cpp", "$_tests/skbug5221.cpp", + "$_tests/skbug6389.cpp", "$_tests/SkColor4fTest.cpp", "$_tests/SkDOMTest.cpp", "$_tests/SkFixed15Test.cpp", diff --git a/src/effects/SkImageSource.cpp b/src/effects/SkImageSource.cpp index 9c32cf8775..96f5bf48d3 100644 --- a/src/effects/SkImageSource.cpp +++ b/src/effects/SkImageSource.cpp @@ -27,7 +27,7 @@ sk_sp SkImageSource::Make(sk_sp image, const SkRect& srcRect, const SkRect& dstRect, SkFilterQuality filterQuality) { - if (!image) { + if (!image || srcRect.width() <= 0.0f || srcRect.height() <= 0.0f) { return nullptr; } diff --git a/tests/skbug6389.cpp b/tests/skbug6389.cpp new file mode 100644 index 0000000000..f52515813a --- /dev/null +++ b/tests/skbug6389.cpp @@ -0,0 +1,23 @@ +/* + * Copyright 2017 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "Resources.h" +#include "SkBlurMaskFilter.h" +#include "SkCanvas.h" +#include "SkImageSource.h" +#include "SkSurface.h" +#include "Test.h" + +DEF_TEST(skbug_6389, r) { + auto s = SkSurface::MakeRasterN32Premul(100, 100); + SkPaint p; + p.setMaskFilter(SkBlurMaskFilter::Make(SkBlurStyle::kNormal_SkBlurStyle, 5, + SkBlurMaskFilter::kHighQuality_BlurFlag)); + p.setImageFilter(SkImageSource::Make(GetResourceAsImage("mandrill_512.png"), {0, 0, 0, 0}, + {0, 0, 0, 0}, (SkFilterQuality)0)); + s->getCanvas()->drawPaint(p); +}