News for hackers. Stuff that matters.
Re:GCC undefined behaviors are getting wild by nayuki on Monday November 28, 2022 @03:51PM (#33779427)
It is tedious but possible to check for overflow before multiplying signed integers.

    long long x = (...);
    long long y = (...);
    long long z;
    
    
    // Portable
    bool ok = x == 0 || y == 0;
    if (!ok) {
        long long a = x > 0 ? x : -x;
        long long b = y < 0 ? y : -y;
        if ((x > 0) == (y > 0))
            ok = -LONG_LONG_MAX / a <= b;
        else
            ok = LONG_LONG_MIN / a <= b;
    }
    if (ok)
        z = x * y;
    
    
    // Compiler-specific
    bool ok = !__builtin_smulll_overflow(x, y, &z);
https://gcc.gnu.org/onlinedocs/gcc/Integer-Overflow-Builtins...
Re:GCC undefined behaviors are getting wild by benj111 on Tuesday November 29, 2022 @04:34AM (#33785471)
Thanks for that.

Slightly worrying that I didn't come across this or a variation in my searches