pixman: Branch 'master'

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Sep 16 14:35:39 UTC 2019


 pixman/pixman.h |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit d60b0af5e32fed034bd163d244148947d3ed91a8
Author: Jonathan Kew <jfkthame at googlemail.com>
Date:   Wed Sep 11 12:07:46 2019 +0000

    Avoid undefined behavior (left-shifting negative value) in pixman_int_to_fixed
    
    Reported in https://bugzilla.mozilla.org/show_bug.cgi?id=1580352. Casting the argument to uint32_t should avoid invoking undefined behavior here. We'll still have *implementation-defined* behavior when casting the result back to pixman_fixed_t, but that's better than *undefined*.

diff --git a/pixman/pixman.h b/pixman/pixman.h
index 62dfb6a..8b38ba7 100644
--- a/pixman/pixman.h
+++ b/pixman/pixman.h
@@ -127,7 +127,7 @@ typedef pixman_fixed_16_16_t	pixman_fixed_t;
 #define pixman_fixed_1_minus_e		(pixman_fixed_1 - pixman_fixed_e)
 #define pixman_fixed_minus_1		(pixman_int_to_fixed(-1))
 #define pixman_fixed_to_int(f)		((int) ((f) >> 16))
-#define pixman_int_to_fixed(i)		((pixman_fixed_t) ((i) << 16))
+#define pixman_int_to_fixed(i)		((pixman_fixed_t) ((uint32_t) (i) << 16))
 #define pixman_fixed_to_double(f)	(double) ((f) / (double) pixman_fixed_1)
 #define pixman_double_to_fixed(d)	((pixman_fixed_t) ((d) * 65536.0))
 #define pixman_fixed_frac(f)		((f) & pixman_fixed_1_minus_e)


More information about the xorg-commit mailing list