From 61b913f7f9ea6cadf4db63ba4d3b748080e0cdb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fl=C3=B6ssie?= Date: Wed, 8 Mar 2017 20:23:57 +0100 Subject: [PATCH] Fix `rtengine::min()` for NaNs (#3742) Also fix `LuminanceToneCurve::Apply()`. Kudos to @heckflosse! --- rtengine/curves.h | 5 +++-- rtengine/rt_math.h | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/rtengine/curves.h b/rtengine/curves.h index 348772075..cd4384bb4 100644 --- a/rtengine/curves.h +++ b/rtengine/curves.h @@ -994,8 +994,9 @@ inline void LuminanceToneCurve::Apply(float &r, float &g, float &b) const assert (lutToneCurve); float currLuminance = r * 0.2126729f + g * 0.7151521f + b * 0.0721750f; - float newLuminance = lutToneCurve[currLuminance]; - float coef = newLuminance / currLuminance; + const float newLuminance = lutToneCurve[currLuminance]; + currLuminance = currLuminance == 0.f ? 0.00001f : currLuminance; + const float coef = newLuminance / currLuminance; r = LIM(r * coef, 0.f, 65535.f); g = LIM(g * coef, 0.f, 65535.f); b = LIM(b * coef, 0.f, 65535.f); diff --git a/rtengine/rt_math.h b/rtengine/rt_math.h index e1c01a94f..6e1138476 100644 --- a/rtengine/rt_math.h +++ b/rtengine/rt_math.h @@ -42,7 +42,7 @@ constexpr const T& min(const T& a) template constexpr const T& min(const T& a, const T& b) { - return a < b ? a : b; + return b < a ? b : a; } template