diff options
author | Greg Daniel <egdaniel@google.com> | 2018-04-03 13:38:01 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-04-03 18:25:51 +0000 |
commit | 3aecc305e161a8e335a0a8d9113d5b4bf3b0807b (patch) | |
tree | 7f2297eeec1de2a457693bcd71ed511bdebe1e4a /src/gpu/effects | |
parent | d09b06a349eff5de7c983882d3c03ff6c306f5b3 (diff) |
Check for divide by zero in fill_in_1D_gaussian_kernel
Bug: skia:7769
Change-Id: I56a67f8a6f19437359ad6e7bf2d57f6e9a7992c9
Reviewed-on: https://skia-review.googlesource.com/118240
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Diffstat (limited to 'src/gpu/effects')
-rw-r--r-- | src/gpu/effects/GrGaussianConvolutionFragmentProcessor.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/gpu/effects/GrGaussianConvolutionFragmentProcessor.cpp b/src/gpu/effects/GrGaussianConvolutionFragmentProcessor.cpp index 5fae103498..121e225796 100644 --- a/src/gpu/effects/GrGaussianConvolutionFragmentProcessor.cpp +++ b/src/gpu/effects/GrGaussianConvolutionFragmentProcessor.cpp @@ -177,7 +177,15 @@ void GrGLConvolutionEffect::GenKey(const GrProcessor& processor, const GrShaderC /////////////////////////////////////////////////////////////////////////////// static void fill_in_1D_gaussian_kernel(float* kernel, int width, float gaussianSigma, int radius) { - const float denom = 1.0f / (2.0f * gaussianSigma * gaussianSigma); + float twoSigmaSqrd = 2.0f * gaussianSigma * gaussianSigma; + if (SkScalarNearlyZero(twoSigmaSqrd, SK_ScalarNearlyZero)) { + for (int i = 0; i < width; ++i) { + kernel[i] = 0.0f; + } + return; + } + + const float denom = 1.0f / twoSigmaSqrd; float sum = 0.0f; for (int i = 0; i < width; ++i) { |