From a1127f8f9d5dede6c314961ff1b2f12fc6e30849 Mon Sep 17 00:00:00 2001 From: Marcio Diaz Date: Wed, 6 May 2020 17:37:02 +0200 Subject: [PATCH] Fix saturating_mul (#5925) --- substrate/primitives/arithmetic/src/traits.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/substrate/primitives/arithmetic/src/traits.rs b/substrate/primitives/arithmetic/src/traits.rs index 6b5e324464..4201a41364 100644 --- a/substrate/primitives/arithmetic/src/traits.rs +++ b/substrate/primitives/arithmetic/src/traits.rs @@ -123,7 +123,7 @@ pub trait Saturating { fn saturating_pow(self, exp: usize) -> Self; } -impl Saturating for T { +impl Saturating for T { fn saturating_add(self, o: Self) -> Self { ::saturating_add(self, o) } @@ -133,7 +133,14 @@ impl Saturating } fn saturating_mul(self, o: Self) -> Self { - self.checked_mul(&o).unwrap_or_else(Bounded::max_value) + self.checked_mul(&o) + .unwrap_or_else(|| + if (self < T::zero()) != (o < T::zero()) { + Bounded::min_value() + } else { + Bounded::max_value() + } + ) } fn saturating_pow(self, exp: usize) -> Self {