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:
parent
29de433b06
commit
89558c9dcb
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user