Browse Source

Merge pull request #93286 from rune-scape/fix-rare-physics-crash

GodotPhysics: Fix crash on null space
Rémi Verschelde 1 year ago
parent
commit
29654bdc4f
2 changed files with 8 additions and 0 deletions
  1. 4 0
      servers/physics_2d/godot_body_2d.cpp
  2. 4 0
      servers/physics_3d/godot_body_3d.cpp

+ 4 - 0
servers/physics_2d/godot_body_2d.cpp

@@ -616,6 +616,8 @@ void GodotBody2D::integrate_velocities(real_t p_step) {
 		return;
 	}
 
+	ERR_FAIL_NULL(get_space());
+
 	if (fi_callback_data || body_state_callback.is_valid()) {
 		get_space()->body_add_to_state_query_list(&direct_state_query_list);
 	}
@@ -705,6 +707,8 @@ bool GodotBody2D::sleep_test(real_t p_step) {
 		return false;
 	}
 
+	ERR_FAIL_NULL_V(get_space(), true);
+
 	if (Math::abs(angular_velocity) < get_space()->get_body_angular_velocity_sleep_threshold() && Math::abs(linear_velocity.length_squared()) < get_space()->get_body_linear_velocity_sleep_threshold() * get_space()->get_body_linear_velocity_sleep_threshold()) {
 		still_time += p_step;
 

+ 4 - 0
servers/physics_3d/godot_body_3d.cpp

@@ -675,6 +675,8 @@ void GodotBody3D::integrate_velocities(real_t p_step) {
 		return;
 	}
 
+	ERR_FAIL_NULL(get_space());
+
 	if (fi_callback_data || body_state_callback.is_valid()) {
 		get_space()->body_add_to_state_query_list(&direct_state_query_list);
 	}
@@ -784,6 +786,8 @@ bool GodotBody3D::sleep_test(real_t p_step) {
 		return false;
 	}
 
+	ERR_FAIL_NULL_V(get_space(), true);
+
 	if (Math::abs(angular_velocity.length()) < get_space()->get_body_angular_velocity_sleep_threshold() && Math::abs(linear_velocity.length_squared()) < get_space()->get_body_linear_velocity_sleep_threshold() * get_space()->get_body_linear_velocity_sleep_threshold()) {
 		still_time += p_step;