From bb8d2c3fe014c9459780db3e93ca4e182c87f4de Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Sat, 4 Jul 2020 23:46:36 +0100 Subject: [PATCH] Fix 6821c0e9: Incorrect use of __builtin_mul_overflow Fixes: #164 --- src/core/overflowsafe_type.hpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/core/overflowsafe_type.hpp b/src/core/overflowsafe_type.hpp index 45b8f48899..25fa715572 100644 --- a/src/core/overflowsafe_type.hpp +++ b/src/core/overflowsafe_type.hpp @@ -95,7 +95,10 @@ public: inline OverflowSafeInt& operator *= (const int factor) { #ifdef WITH_OVERFLOW_BUILTINS - if (unlikely(__builtin_mul_overflow(this->m_value, factor, &this->m_value))) { + T out; + if (likely(!__builtin_mul_overflow(this->m_value, factor, &out))) { + this->m_value = out; + } else { this->m_value = ((this->m_value < 0) == (factor < 0)) ? T_MAX : T_MIN; } #else