diff options
| author | bors <bors@rust-lang.org> | 2015-03-08 08:34:56 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2015-03-08 08:34:56 +0000 |
| commit | b2f09c1165db805ed00707257dd94bb309faf0fe (patch) | |
| tree | 969725212806a202df1089f8dbb9b1a7a7ed9d99 /src/libtest | |
| parent | d30609ffd782c941f38d62caaed8beb6fde965db (diff) | |
| parent | 946a3963f3cf3f6f4334e89793af77a4da163dc7 (diff) | |
| download | rust-b2f09c1165db805ed00707257dd94bb309faf0fe.tar.gz rust-b2f09c1165db805ed00707257dd94bb309faf0fe.zip | |
Auto merge of #23127 - alexcrichton:bench-wrapping, r=brson
Right now the rust upgrade in cargo is blocked on fixing this overflow. If a
this benchmark is run it will trigger an overflow error today:
#[bench]
fn foo(b: &mut test::Bencher) {}
This commit adds a check on each iteration of the loop that the maximum
multiplier (10) doesn't overflow, and if it does just return the results so far.
Diffstat (limited to 'src/libtest')
| -rw-r--r-- | src/libtest/lib.rs | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/libtest/lib.rs b/src/libtest/lib.rs index 44aaeec6145..e4e1845de63 100644 --- a/src/libtest/lib.rs +++ b/src/libtest/lib.rs @@ -1109,7 +1109,14 @@ impl Bencher { return summ5; } - n *= 2; + // If we overflow here just return the results so far. We check a + // multiplier of 10 because we're about to multiply by 2 and the + // next iteration of the loop will also multiply by 5 (to calculate + // the summ5 result) + n = match n.checked_mul(10) { + Some(_) => n * 2, + None => return summ5, + }; } } } |
