Prevent a potential EnsureComp exception. #6405
Merged
+8
−10
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.
Noticed this while doing solutions refactor stuff, EnsureComp(ref Entity<T?>) can take a component as an argument, but if it's null, it will try to add a component without checking if one already exists.
So if for example, you had a method that took an Entity<T?> as an argument, which called EnsureComp(ref Entity<T?>) to ensure that the component always exists, but only passed an EntityUid to your method, despite the component existing, this method would try to add the component again without checking if it already existed.
This just changes the method so if you pass a null component, it runs the other EnsureComp method which helps remove code copypasting, and if you do pass a component, ensures it's not being deleted and adds it back if it is being deleted.