• Marko Mäkelä's avatar
    MDEV-26645: Fix UB in Item_func_plus and Item_func_minus · b69191bb
    Marko Mäkelä authored
    An integer overflow in an expression like a+b or a-b is undefined behavior.
    The compiler is allowed to assume that no such overflow is possible,
    and optimize away some code accordingly.
    
    Item_func_plus::int_op(), Item_func_minus::int_op(): Always check
    for overflow.
    
    Depending on the compiler and the compilation options, a test might fail:
    
    CURRENT_TEST: main.func_math
    mysqltest: At line 425: query 'SELECT 9223372036854775807 + 9223372036854775807' succeeded - should have failed with errno 1690...
    
    A similar bug had been fixed earlier in
    commit 328edf85.
    b69191bb
item_func.cc 187 KB