[cairo-commit] src/cairo-fixed-private.h
Andrea Canciani
ranma42 at kemper.freedesktop.org
Wed Jun 16 14:00:23 PDT 2010
src/cairo-fixed-private.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
New commits:
commit 3cd07559328b60e3da85debb805cb4a3fc4abc22
Author: Andrea Canciani <ranma42 at gmail.com>
Date: Wed Jun 16 22:54:08 2010 +0200
correct rounding computation
cairo_fixed_integer_round[_down] were adding an unsigned mask value
before shifting its result, causing the shift to be computed as
logical (unsigned) right shift, thus producing incorrect values for
negative inputs. Making the mask value signed fixes this issue.
Bug report by cu:
http://lists.cairographics.org/archives/cairo/2010-June/020115.html
diff --git a/src/cairo-fixed-private.h b/src/cairo-fixed-private.h
index 66898a2..8873056 100644
--- a/src/cairo-fixed-private.h
+++ b/src/cairo-fixed-private.h
@@ -52,7 +52,7 @@
#define CAIRO_FIXED_ONE_DOUBLE ((double)(1 << CAIRO_FIXED_FRAC_BITS))
#define CAIRO_FIXED_EPSILON ((cairo_fixed_t)(1))
-#define CAIRO_FIXED_FRAC_MASK (((cairo_fixed_unsigned_t)(-1)) >> (CAIRO_FIXED_BITS - CAIRO_FIXED_FRAC_BITS))
+#define CAIRO_FIXED_FRAC_MASK ((cairo_fixed_t)(((cairo_fixed_unsigned_t)(-1)) >> (CAIRO_FIXED_BITS - CAIRO_FIXED_FRAC_BITS)))
#define CAIRO_FIXED_WHOLE_MASK (~CAIRO_FIXED_FRAC_MASK)
static inline cairo_fixed_t
More information about the cairo-commit
mailing list