-
Notifications
You must be signed in to change notification settings - Fork 67
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix test_uint32_shr failing on debug builds. #98
base: main
Are you sure you want to change the base?
Conversation
for _ in 0..50 { | ||
for i in 32..60 { | ||
let num = rng.gen(); | ||
let result = std::panic::catch_unwind(|| UInt32::constant(num).shr(i)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think a better approach is using #[should_panic]
on the test itself.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I couldn't do that because I wanted the test to make sure it panics on a bunch of different values, whereas #[should_panic]
would only ensure one of the values cause a panic.
Simplify dependencies
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oops! I thought I replied to the comment but it never got posted because my reply was part of this review which I never submitted!
for _ in 0..50 { | ||
for i in 32..60 { | ||
let num = rng.gen(); | ||
let result = std::panic::catch_unwind(|| UInt32::constant(num).shr(i)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I couldn't do that because I wanted the test to make sure it panics on a bunch of different values, whereas #[should_panic]
would only ensure one of the values cause a panic.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
utACK with nonblocking comment.
fn test_uint32_shr_overflow() { | ||
let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); | ||
|
||
for _ in 0..50 { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is it really needed to do this 50 times? The behaviour is easily seen from the source to not be value-dependent.
This PR would need to be migrated over to the main rust crates. |
This makes
shr
behave differently than Rust's>>
in release mode but IMO how>>
works in release mode is kinda dumb -- I could see myself assuming the argument to shr or the right argument to>>
saturates instead of taking the value mod 32, and introducing security bugs that way -- so this seems safer.