Make SimpleExpression copy the received array before returning it #5329
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.
Description
The Javadoc of
Expression
sgetArray
andgetAll
state that the returned array must not be an internal array (i.e. it can be modified freely). However, the Javadoc ofSimpleExpression#get(Event)
andPropertyExpression#get(Event, F[])
do not have this requirement.The implementations of SimpleExpression getArray and getAll, and PropertyExpression#getAll did not use this properly, as it assumed the returned arrays (from the get methods) were not internal, as they were sometimes directly returned. This means that an internal array could be returned in a getArray or getAll method, which should not be allowed.
I changed it so the implementations of getArray and getAll will now never return the array received directly. Alternatively, I could've added the requirement to SimpleExpression and PropertyExpression to not return an internal array. However, since these classes are made to allow for an simpler implementation of expressions, I felt like this is not something those simple implementation should be expected to deal with (and on top of that, it'd be a breaking change).
Target Minecraft Versions: any
Requirements: none
Related Issues: #5322