From f8c06863fe97759b6681f2c0589998227db590bd Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Thu, 12 Apr 2018 21:51:57 +0200 Subject: [PATCH] fix crash when the CL curve is such that curve(0) >> 0 --- rtengine/improcfun.cc | 4 ++-- rtengine/iplab2rgb.cc | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc index 08fe8db0e..c30df4d7a 100644 --- a/rtengine/improcfun.cc +++ b/rtengine/improcfun.cc @@ -4682,8 +4682,8 @@ void ImProcFunctions::chromiLuminanceCurve (PipetteBuffer *pipetteBuffer, int pW factorsat = chromaCfactor; factor = factorsat; Color::transitred ( HH, Chprov1, dred, factorskin, protect_redcur, factorskinext, deltaHH, factorsat, factor); - atmp *= factor; - btmp *= factor; + atmp = LIM(atmp * factor, min(-42000.f, atmp), max(42000.f, atmp)); + btmp = LIM(btmp * factor, min(-42000.f, btmp), max(42000.f, btmp)); } // end C=f(L) diff --git a/rtengine/iplab2rgb.cc b/rtengine/iplab2rgb.cc index fe8590470..0c1e00774 100644 --- a/rtengine/iplab2rgb.cc +++ b/rtengine/iplab2rgb.cc @@ -38,7 +38,7 @@ inline void clipLAB(float iL, float ia, float ib, float &oL, float &oa, float &o { if (iL < 0.f) { oL = oa = ob = 0.f; - } else if (iL > 32768.f) { + } else if (iL > 32768.f || min(ia, ib) < -42000.f || max(ia, ib) > 42000.f) { float X, Y, Z; float r, g, b;