diff options
| author | Daiki Mizukami <mizukami1113@gmail.com> | 2018-04-24 01:45:44 +0900 |
|---|---|---|
| committer | Daiki Mizukami <mizukami1113@gmail.com> | 2018-04-24 01:53:40 +0900 |
| commit | fbb1c280bf5f3d4fc68f323860ade8fa48d96979 (patch) | |
| tree | b32de9c3c7b2d72aa452e62330877c3c410b1c42 /src/libcore/num | |
| parent | 1fac3ca9c4e4ba3d27a9ffb29b78f7656d15e160 (diff) | |
| download | rust-fbb1c280bf5f3d4fc68f323860ade8fa48d96979.tar.gz rust-fbb1c280bf5f3d4fc68f323860ade8fa48d96979.zip | |
core: Fix overflow in `int::mod_euc` when `self < 0 && rhs == MIN`
Diffstat (limited to 'src/libcore/num')
| -rw-r--r-- | src/libcore/num/mod.rs | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/libcore/num/mod.rs b/src/libcore/num/mod.rs index aa4d4bc638b..4893e05badc 100644 --- a/src/libcore/num/mod.rs +++ b/src/libcore/num/mod.rs @@ -1765,7 +1765,11 @@ assert_eq!((-a).mod_euc(-b), 1); pub fn mod_euc(self, rhs: Self) -> Self { let r = self % rhs; if r < 0 { - r + rhs.abs() + if rhs.is_negative() { + r - rhs + } else { + r + rhs + } } else { r } |
