summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarti Maria <marti.maria@littlecms.com>2022-10-20 15:24:27 +0200
committerMarti Maria <marti.maria@littlecms.com>2022-10-20 15:24:27 +0200
commitaa7f240da8dc27a0bb082462889cca9026bf2b27 (patch)
treecfac93608341db8d84721938a2847315c2e43f80
parentcbb7b92e01100099955a92d5eb5e863e97ebeb56 (diff)
downloadlcms2-aa7f240da8dc27a0bb082462889cca9026bf2b27.tar.gz
Fix Krita segfault
_cmsQuickFloor() fails when numbers are too close, on fourth decimals, floor of 47.9993 was taken as 48 instead of 47 and this was enough to generate a negative rest and create a segfault. Math is sometimes complex.
-rw-r--r--plugins/fast_float/src/fast_float_tethra.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/plugins/fast_float/src/fast_float_tethra.c b/plugins/fast_float/src/fast_float_tethra.c
index 64e011a..6c49774 100644
--- a/plugins/fast_float/src/fast_float_tethra.c
+++ b/plugins/fast_float/src/fast_float_tethra.c
@@ -134,9 +134,9 @@ void FloatCLUTEval(struct _cmstransform_struct* CMMcargo,
py = g * p->Domain[1];
pz = b * p->Domain[2];
- x0 = _cmsQuickFloor(px); rx = (px - (cmsFloat32Number)x0);
- y0 = _cmsQuickFloor(py); ry = (py - (cmsFloat32Number)y0);
- z0 = _cmsQuickFloor(pz); rz = (pz - (cmsFloat32Number)z0);
+ x0 = (int) floorf(px); rx = (px - (cmsFloat32Number)x0);
+ y0 = (int) floorf(py); ry = (py - (cmsFloat32Number)y0);
+ z0 = (int) floorf(pz); rz = (pz - (cmsFloat32Number)z0);
X0 = p->opta[2] * x0;