On 20 Mar 2022 07:52, Eric Bresie wrote: > My C is a little rusty so forgive me up front if I’m not reading something quite right… > > Trying to understand the basic logic, the macro is expected to return Boolean but the expression is assigning the multiplication results to the size and then always returning 0 (false). Is that flow correct? Should there be some form of “==“ involved and/or ever return non-zero number? it returns a bool to indicate whether there was overflow, but the result of the actual multiplication of the first two operands is stored in the 3rd arg. a return value of true means "the value overflowed", not "the multiplication was successful". hence returning false is what the stub should do. https://gcc.gnu.org/onlinedocs/gcc/Integer-Overflow-Builtins.html Built-in Function: bool __builtin_mul_overflow (type1 a, type2 b, type3 *res) These built-in functions promote the first two operands into infinite precision signed type and perform multiplication on those promoted operands. The result is then cast to the type the third pointer argument points to and stored there. If the stored result is equal to the infinite precision result, the built-in functions return false, otherwise they return true. As the multiplication is performed in infinite signed precision, these built-in functions have fully defined behavior for all argument values. -mike