Skip to content

Conversation

@pablogsal
Copy link
Member

@pablogsal pablogsal commented Feb 10, 2019

The overflow check was relying on undefined behaviour as it was using the result of the multiplication to do the check, and once the overflow has already happened, any operation on the result is undefined behaviour.

I have moved the test to the correct class as well (TestMath).

https://bugs.python.org/issue35959

@pablogsal pablogsal requested a review from rhettinger February 10, 2019 20:42
@pablogsal pablogsal force-pushed the bpo35959 branch 7 times, most recently from 4a30482 to 5025c0d Compare February 10, 2019 21:46
@pablogsal pablogsal force-pushed the bpo35959 branch 2 times, most recently from 2e18189 to 933fb66 Compare February 10, 2019 21:56
@pablogsal pablogsal changed the title bpo-35959: Remove unneeded check in math.prod and add more tests bpo-35959: Rework integer overflow path in math.prod and add more tests Feb 10, 2019
@pablogsal
Copy link
Member Author

@mdickinson Do you have some suggestions for extra checks to cover these corner cases?

Copy link
Contributor

@eamanu eamanu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. I am testing the PR on Unbuntu 18 04 x86_64 and run ok.

@pablogsal
Copy link
Member Author

pablogsal commented Feb 12, 2019

@mdickinson At the end I have used Python2's approach for overflow handling. Could you review again this PR?

@mdickinson
Copy link
Member

Could you review again this PR?

Will do, but I'm not going to have time before the weekend. If another core dev wants to review before then, that's fine with me.

@pablogsal pablogsal requested a review from mdickinson February 21, 2019 22:09
@pablogsal
Copy link
Member Author

I am going to merge this one as this is a known problem and I do not want to miss more alphas. As the code used is the code of how Python2 managed overflow for multiplication and this is battle tested, this should be more than ok. In case we want to improve/speedup how we handle the overflow we can do it in another PR.

@pablogsal pablogsal merged commit 0411411 into python:master Mar 9, 2019
@pablogsal pablogsal deleted the bpo35959 branch March 9, 2019 19:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants