Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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 don't know quite what's going on, but I'd want to check that we're not getting
search == NULLhere andremaining_mass == 0before the loop even starts. LMK if you'd like me to get my head around all this enough to double-check the correctness.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.
In the problematic example I posted, I think that’s not the case.
Before entering the loop, search is not null and remaining_mass is exactly 1.0 (up to floating-point error, I guess).
At the end of the first iteration, remaining_mass is decreased by one (which makes remaining_mass==0) but search is still not null. That's the hull we chose when doing
>0instead of>=0.The assertion error is triggered in the 3070th iteration when the loop finishes traversing the linked list and finds the NULL.