-
-
Notifications
You must be signed in to change notification settings - Fork 33.9k
bpo-35959: Fix division by 0 when checking for overflow #11808
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
Conversation
|
This fix the issue, do you think we still need to consume the whole iterable thought? Maybe we could break early? |
If something like ('nan') appear afterwards, the result need to be ('nan') so we cannot break earlier. |
|
You're right, thanks. |
| prod([10, 20], [30, 40]) # start is a keyword-only argument | ||
|
|
||
| self.assertEqual(prod([0, 1, 2, 3]), 0) | ||
| self.assertEqual(prod([1, 0, 2, 3]), 0) |
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.
[1, 2, 3, 0] was already working fine without this fix so is it worth adding this as a test case? I have less knowledge with C so please ignore if this is not needed.
self.assertEqual(prod([1, 2, 3, 0]), 0)
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 have added this test and removed the range base one. Even if that case worked fine because it takes a different code path, I like to have the 0 in the start/middle/end.
Thanks for the catch!
tirkarthi
left a comment
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.
This PR fixes my case. Thanks for the explanation on the zero by division code path.
|
@tirkarthi Thanks to you for finding the bug! :) |
https://bugs.python.org/issue35959