mirror of
https://github.com/brl/mutter.git
synced 2024-11-25 01:20:42 -05:00
cogl tests: Force defined behaviour for 24-bit left-shifts
When r is 128 or more, running tests compiled with the undefined behaviour sanitizer (ubsan) reports: test-utils.c:312:45: runtime error: left shift of 128 by 24 places cannot be represented in type 'int' which indeed it cannot. Force the type to be unsigned 32-bit so that we get defined behaviour. Similarly, in test-atlas-migration, the left-shifted guint8 is promoted to int, which again does not have enough non-sign bits available to left-shift a value >= 128 by 24 bits. Again, force the shift to be done in unsigned 32-bit space. This was originally cogl!22, but applies equally to mutter's fork of cogl. https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1271 Signed-off-by: Simon McVittie <smcv@debian.org>
This commit is contained in:
parent
c3bf10d19a
commit
a3cc62c285
@ -250,7 +250,17 @@ void
|
|||||||
test_utils_check_pixel_rgb (CoglFramebuffer *test_fb,
|
test_utils_check_pixel_rgb (CoglFramebuffer *test_fb,
|
||||||
int x, int y, int r, int g, int b)
|
int x, int y, int r, int g, int b)
|
||||||
{
|
{
|
||||||
test_utils_check_pixel (test_fb, x, y, (r << 24) | (g << 16) | (b << 8));
|
g_return_if_fail (r >= 0);
|
||||||
|
g_return_if_fail (g >= 0);
|
||||||
|
g_return_if_fail (b >= 0);
|
||||||
|
g_return_if_fail (r <= 0xFF);
|
||||||
|
g_return_if_fail (g <= 0xFF);
|
||||||
|
g_return_if_fail (b <= 0xFF);
|
||||||
|
|
||||||
|
test_utils_check_pixel (test_fb, x, y,
|
||||||
|
(((guint32) r) << 24) |
|
||||||
|
(((guint32) g) << 16) |
|
||||||
|
(((guint32) b) << 8));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -99,9 +99,9 @@ verify_texture (CoglTexture *texture, int size)
|
|||||||
};
|
};
|
||||||
|
|
||||||
test_utils_compare_pixel (p,
|
test_utils_compare_pixel (p,
|
||||||
(real_color.red << 24) |
|
(((guint32) real_color.red) << 24) |
|
||||||
(real_color.green << 16) |
|
(((guint32) real_color.green) << 16) |
|
||||||
(real_color.blue << 8) |
|
(((guint32) real_color.blue) << 8) |
|
||||||
opacity);
|
opacity);
|
||||||
g_assert_cmpint (p[3], ==, opacity);
|
g_assert_cmpint (p[3], ==, opacity);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user