mirror of
https://github.com/gbdev/rgbds.git
synced 2026-08-19 05:14:31 +00:00
Correct assumption to avoid UB with 1 << 31
This commit is contained in:
+2
-2
@@ -485,8 +485,8 @@ void Expression::checkNBit(uint8_t n) const {
|
||||
}
|
||||
|
||||
bool checkNBit(int32_t v, uint8_t n, char const *name) {
|
||||
assume(n != 0); // That doesn't make sense
|
||||
assume(n < CHAR_BIT * sizeof(int)); // Otherwise `1 << n` is UB
|
||||
assume(n != 0); // That doesn't make sense
|
||||
assume(n < CHAR_BIT * sizeof(int) - 1); // Otherwise `1 << n` is UB
|
||||
|
||||
if (v < -(1 << n) || v >= 1 << n) {
|
||||
warning(
|
||||
|
||||
+2
-2
@@ -521,8 +521,8 @@ void patch_CheckAssertions() {
|
||||
}
|
||||
|
||||
static void checkPatchSize(Patch const &patch, int32_t v, uint8_t n) {
|
||||
assume(n != 0); // That doesn't make sense
|
||||
assume(n < CHAR_BIT * sizeof(int)); // Otherwise `1 << n` is UB
|
||||
assume(n != 0); // That doesn't make sense
|
||||
assume(n < CHAR_BIT * sizeof(int) - 1); // Otherwise `1 << n` is UB
|
||||
|
||||
if (v < -(1 << n) || v >= 1 << n) {
|
||||
diagnosticAt(
|
||||
|
||||
Reference in New Issue
Block a user