Module Name:    xsrc
Committed By:   mrg
Date:           Mon Jan  9 02:49:52 UTC 2023

Modified Files:
        xsrc/external/mit/pixman/dist/pixman: pixman.h

Log Message:
pull across a fix from upstream to fix clang builds.

https://gitlab.freedesktop.org/pixman/pixman/-/merge_requests/16/diffs?commit_id=d60b0af5e32fed034bd163d244148947d3ed91a8

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*.


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 xsrc/external/mit/pixman/dist/pixman/pixman.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: xsrc/external/mit/pixman/dist/pixman/pixman.h
diff -u xsrc/external/mit/pixman/dist/pixman/pixman.h:1.9 xsrc/external/mit/pixman/dist/pixman/pixman.h:1.10
--- xsrc/external/mit/pixman/dist/pixman/pixman.h:1.9	Sat Dec 17 09:06:34 2022
+++ xsrc/external/mit/pixman/dist/pixman/pixman.h	Mon Jan  9 02:49:51 2023
@@ -127,7 +127,7 @@ typedef pixman_fixed_16_16_t	pixman_fixe
 #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)

Reply via email to