From aa7f240da8dc27a0bb082462889cca9026bf2b27 Mon Sep 17 00:00:00 2001 From: Marti Maria Date: Thu, 20 Oct 2022 15:24:27 +0200 Subject: 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. --- plugins/fast_float/src/fast_float_tethra.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'plugins') 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; -- cgit v1.2.1