From cfac203297aeb0099320cb62c5cd21f21fb7e5d8 Mon Sep 17 00:00:00 2001 From: Lee Clagett Date: Tue, 27 May 2025 21:32:40 -0400 Subject: [PATCH] Fix safe integer subtraction check --- src/numeric.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/numeric.h b/src/numeric.h index 1b5e0ec..54df738 100644 --- a/src/numeric.h +++ b/src/numeric.h @@ -75,7 +75,7 @@ namespace lwsf { namespace internal safe_integer& subtract(safe_integer rhs) { - if (value_ - std::numeric_limits::min() < rhs.value_) + if ((0 < rhs.value_ && value_ < std::numeric_limits::min() < rhs.value_) || (rhs.value_ < 0 && value_ > std::numeric_limits::max() + rhs.value_)) throw std::underflow_error{"safe_integer underflow in subtraction"}; value_ -= rhs.value_; return *this;