From 4cd1ad066d6e914aeed1d1cb6b555cbfedaf1704 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Tue, 23 Jan 2018 13:44:58 +0100 Subject: [PATCH] imagefloat: correctly clip the values when outputting to 8- or 16-bit formats Fixes #4310 --- rtengine/imagefloat.cc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/rtengine/imagefloat.cc b/rtengine/imagefloat.cc index bfeb85534..fa45c53ba 100644 --- a/rtengine/imagefloat.cc +++ b/rtengine/imagefloat.cc @@ -163,15 +163,15 @@ void Imagefloat::getScanline (int row, unsigned char* buffer, int bps) } else if (bps == 16) { unsigned short *sbuffer = (unsigned short *)buffer; for (int i = 0, ix = 0; i < width; i++) { - sbuffer[ix++] = r(row, i); - sbuffer[ix++] = g(row, i); - sbuffer[ix++] = b(row, i); + sbuffer[ix++] = CLIP(r(row, i)); + sbuffer[ix++] = CLIP(g(row, i)); + sbuffer[ix++] = CLIP(b(row, i)); } } else if (bps == 8) { for (int i = 0, ix = 0; i < width; i++) { - buffer[ix++] = rtengine::uint16ToUint8Rounded(r(row, i)); - buffer[ix++] = rtengine::uint16ToUint8Rounded(g(row, i)); - buffer[ix++] = rtengine::uint16ToUint8Rounded(b(row, i)); + buffer[ix++] = rtengine::uint16ToUint8Rounded(CLIP(r(row, i))); + buffer[ix++] = rtengine::uint16ToUint8Rounded(CLIP(g(row, i))); + buffer[ix++] = rtengine::uint16ToUint8Rounded(CLIP(b(row, i))); } } }