From 7d7d1edaf50d85eba6cf45526c58907c60412db4 Mon Sep 17 00:00:00 2001 From: Francois Berder Date: Tue, 30 Apr 2024 15:11:33 +0200 Subject: [PATCH] fixup! fixup! fixup! fixup! fixup! fixup! Truncate value of increment operator --- lib/valueflow.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/valueflow.cpp b/lib/valueflow.cpp index e3d7a749a70f..37c2e4863f14 100644 --- a/lib/valueflow.cpp +++ b/lib/valueflow.cpp @@ -606,9 +606,7 @@ static ValueFlow::Value truncateImplicitConversion(Token* parent, const ValueFlo static long long truncateIntValue(long long value, size_t value_size, const ValueType::Sign dst_sign) { - MathLib::biguint unsignedMaxValue = -1; - if (value_size < sizeof(MathLib::biguint)) - unsignedMaxValue ^= ~(unsignedMaxValue << (value_size * 8)); + const MathLib::biguint unsignedMaxValue = std::numeric_limits::max() >> ((sizeof(unsignedMaxValue) - value_size) * 8); const MathLib::biguint signBit = 1ULL << (value_size * 8 - 1); value &= unsignedMaxValue; if (dst_sign == ValueType::Sign::SIGNED && (value & signBit))