Fix mutation of global state 'InvalidRect64'/'InvalidRectD' by 'GetBounds' variants. #11
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.
Hi,
Clipper.GetBounds
changes the state ofInvalidRect64
andInvalidRectD
.Therefor
GetBounds
accumulates the biggest bounds over the lifetime of the program and does not compute the requested bounds for the requested path.While this can be worked around by the user (because those fields are mutable and public)
it makes the static utility functions dependent on global state and therefor prohibits the usage in a multi threaded context.
I think the same bug (or at least absolutely annoying and unexpected behaviour) can be found in the original C# implementation.(EDIT: The original implementation implementsRect64
andRectD
as struct and therefor asValueType
. Which means this port differs currently in behaviour. )Have a nice day
-ClaasJG