mirror of
https://github.com/gbdev/rgbds.git
synced 2026-09-05 21:37:07 +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) {
|
bool checkNBit(int32_t v, uint8_t n, char const *name) {
|
||||||
assume(n != 0); // That doesn't make sense
|
assume(n != 0); // That doesn't make sense
|
||||||
assume(n < CHAR_BIT * sizeof(int)); // Otherwise `1 << n` is UB
|
assume(n < CHAR_BIT * sizeof(int) - 1); // Otherwise `1 << n` is UB
|
||||||
|
|
||||||
if (v < -(1 << n) || v >= 1 << n) {
|
if (v < -(1 << n) || v >= 1 << n) {
|
||||||
warning(
|
warning(
|
||||||
|
|||||||
+2
-2
@@ -521,8 +521,8 @@ void patch_CheckAssertions() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void checkPatchSize(Patch const &patch, int32_t v, uint8_t n) {
|
static void checkPatchSize(Patch const &patch, int32_t v, uint8_t n) {
|
||||||
assume(n != 0); // That doesn't make sense
|
assume(n != 0); // That doesn't make sense
|
||||||
assume(n < CHAR_BIT * sizeof(int)); // Otherwise `1 << n` is UB
|
assume(n < CHAR_BIT * sizeof(int) - 1); // Otherwise `1 << n` is UB
|
||||||
|
|
||||||
if (v < -(1 << n) || v >= 1 << n) {
|
if (v < -(1 << n) || v >= 1 << n) {
|
||||||
diagnosticAt(
|
diagnosticAt(
|
||||||
|
|||||||
Reference in New Issue
Block a user