diff options
author | Marti Maria <marti.maria@littlecms.com> | 2022-10-20 15:24:27 +0200 |
---|---|---|
committer | Marti Maria <marti.maria@littlecms.com> | 2022-10-20 15:24:27 +0200 |
commit | aa7f240da8dc27a0bb082462889cca9026bf2b27 (patch) | |
tree | cfac93608341db8d84721938a2847315c2e43f80 | |
parent | cbb7b92e01100099955a92d5eb5e863e97ebeb56 (diff) | |
download | lcms2-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.c | 6 |
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; |