From e8b37a7a2543cf8fabd9780931ecf9dd7a461975 Mon Sep 17 00:00:00 2001 From: Ell Date: Thu, 5 Oct 2017 16:05:25 -0400 Subject: [PATCH] Bug 788461 - Selection with a Fixed size is created with an ... ... off-by one size in special cases SIGNED_ROUND(), which is used by GimpToolRectangle, among other things, used to round negative values which lie exactly between two integers, i.e., -foo.5, down. This could lead to the rectangle being one pixel bigger than expected, in either dimension, when one of its edges had a negative coordinate, and the opposite edge had a positive coordinate. Fix SIGNED_ROUND() to always round such values up, regardless of sign. --- libgimpmath/gimpmath.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libgimpmath/gimpmath.h b/libgimpmath/gimpmath.h index d3abb33041..5925004130 100644 --- a/libgimpmath/gimpmath.h +++ b/libgimpmath/gimpmath.h @@ -84,7 +84,7 @@ G_BEGIN_DECLS * * This macro rounds its argument @x to the nearest integer. **/ -#define SIGNED_ROUND(x) ((int) ((((x) < 0) ? (x) - 0.5 : (x) + 0.5))) +#define SIGNED_ROUND(x) ((int) RINT (x)) /** * SQR: