Fix renderSegment reversed range logic and align rounding behavior. #2245
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.
Fixes #2238
This PR fixes two issues in BezierCurve::renderSegment:
Reversed argument handling (start > end)
The existing
else if (end > start)branch was unreachable due to thepreceding
start < endcheck. As a result, callingrenderSegmentwithreversed parameters returned the full curve instead of the intended subrange.
The condition is corrected so reversed ranges now slice the proper segment.
Asymmetric rounding when slicing sampled vertices
The forward and reversed paths previously used different rounding rules,
causing
renderSegment(a, b)andrenderSegment(b, a)to select slightlydifferent vertex ranges. Index calculation is now normalized so both cases
refer to the same portion of the sampled curve.
Result
renderSegmentnow handles reversed arguments consistently and returns thecorrect sub-curve in both orders, with stable and predictable indexing.