Fix skpdiff segfault caused by NaN computation.

BUG=skia:2574
R=mtklein@google.com, rmistry@google.com

Author: djsollen@google.com

Review URL: https://codereview.chromium.org/296033004

git-svn-id: http://skia.googlecode.com/svn/trunk@14818 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
commit-bot@chromium.org 2014-05-21 11:57:12 +00:00
parent 29de433b06
commit 89558c9dcb

View File

@ -1,4 +1,5 @@
#include <cmath>
#include <math.h>
#include "SkBitmap.h"
#include "skpdiff_util.h"
@ -159,10 +160,12 @@ static bool bitmap_to_cielab(const SkBitmap* bitmap, ImageLAB* outImageLAB) {
static float contrast_sensitivity(float cyclesPerDegree, float luminance) {
float a = 440.0f * powf(1.0f + 0.7f / luminance, -0.2f);
float b = 0.3f * powf(1.0f + 100.0f / luminance, 0.15f);
return a *
cyclesPerDegree *
expf(-b * cyclesPerDegree) *
sqrtf(1.0f + 0.06f * expf(b * cyclesPerDegree));
float exp = expf(-b * cyclesPerDegree);
float root = sqrtf(1.0f + 0.06f * expf(b * cyclesPerDegree));
if (!std::isfinite(exp) || !std::isfinite(root)) {
return 0;
}
return a * cyclesPerDegree * exp * root;
}
#if 0