[3.x] Fix physics on_floor_body
crash
#88946
Merged
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.
Physics body previously stored the
RID
of a collision object and accessed it on the next frame, leading to a crash if the object had been deleted. This PR stores theObjectID
in addition to theRID
, and checks the object still exists prior to access.Fixes #74732
Alternative to #77616
Notes
ObjectDB::get_instance()
used in this PR involved a lock and a hash table lookup, whereas RID references requires no lock and is very fast O(1).ObjectDB
and use, then all bets are off.