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.
This commit is contained in:
bors 2015-03-08 08:34:56 +00:00
commit b2f09c1165

View file

@ -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,
};
}
}
}