Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e6ef1549 authored by Marco Nelissen's avatar Marco Nelissen
Browse files

AUtils: disable overflow checks for isInRange

isInRange() does its own overflow checks, and the compiler's overflow
checks get in the way of that.

Bug: 27852836
Change-Id: I9b699332ca139980031306e74735bcb0a341e3da
parent 52ffc55f
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -68,6 +68,7 @@ void ENSURE_UNSIGNED_TYPE() {

// needle is in range [hayStart, hayStart + haySize)
template<class T, class U>
__attribute__((no_sanitize("integer")))
inline static bool isInRange(const T &hayStart, const U &haySize, const T &needle) {
    ENSURE_UNSIGNED_TYPE<U>();
    return (T)(hayStart + haySize) >= hayStart && needle >= hayStart && (U)(needle - hayStart) < haySize;
@@ -75,6 +76,7 @@ inline static bool isInRange(const T &hayStart, const U &haySize, const T &needl

// [needleStart, needleStart + needleSize) is in range [hayStart, hayStart + haySize)
template<class T, class U>
__attribute__((no_sanitize("integer")))
inline static bool isInRange(
        const T &hayStart, const U &haySize, const T &needleStart, const U &needleSize) {
    ENSURE_UNSIGNED_TYPE<U>();