Skip to content

[1.22] tests: Force defined behaviour for 24-bit left-shifts

Simon McVittie requested to merge wip/smcv/undefined-left-shift into cogl-1.22

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.

Merge request reports