test: Fix an overflow on empty benchmarks

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:
Alex Crichton 2015-03-06 11:58:32 -08:00
parent 1fe8f22145
commit 946a3963f3

View file

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