Remove unsound cast in thread local resources #742
Closed
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 in #671 that it acquires an unique reference from a shared reference, which is always unsound regardless of runtime tracking. miri confirms this concern:
This PR changes
get_mut(&self)
toget_mut(&mut self)
and removes the problematic code.gilrs_event_system
needed to be tweaked slightly (making a temporary buffer for events). If desired, we can add a new resource that only this system can access by type to re-use a buffer. I have testedgamepad_input
andgamepad_input_events
examples with a xbox 360 controller and the behavior was the same before and after.thread_local_resource_mut_ref_aliasing
test is commented out for now since the issue it aimed to catch is now caught at compile time. Does this makeResourceRefMut
no longer needed? To keep the diff small at first, I have left it there for now.