Make gradient effect creation fail if texture LUT creation fails
Bug: skia:6198
Change-Id: Ib8fb273564ca54ee9e6e045ac67e191af705a37a
Reviewed-on: https://skia-review.googlesource.com/19260
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
diff --git a/src/shaders/gradients/SkLinearGradient.cpp b/src/shaders/gradients/SkLinearGradient.cpp
index f803d5e..02969bd 100644
--- a/src/shaders/gradients/SkLinearGradient.cpp
+++ b/src/shaders/gradients/SkLinearGradient.cpp
@@ -376,7 +376,8 @@
class GLSLLinearProcessor;
static sk_sp<GrFragmentProcessor> Make(const CreateArgs& args) {
- return sk_sp<GrFragmentProcessor>(new GrLinearGradient(args));
+ auto processor = sk_sp<GrLinearGradient>(new GrLinearGradient(args));
+ return processor->isValid() ? std::move(processor) : nullptr;
}
~GrLinearGradient() override {}
@@ -489,6 +490,9 @@
sk_sp<GrFragmentProcessor> inner(GrLinearGradient::Make(
GrGradientEffect::CreateArgs(args.fContext, this, &matrix, fTileMode,
std::move(colorSpaceXform), SkToBool(args.fDstColorSpace))));
+ if (!inner) {
+ return nullptr;
+ }
return GrFragmentProcessor::MulOutputByInputAlpha(std::move(inner));
}