69cf996ce6
I could reproduce the crash described in #1284 only with 32bits versions of godot. The test scene contains a Plane collision shape, and a kinematicsbody with a Sphere collision shape. The crash occurs into `CollisionSolverSW::solve_distance_plane()` on line 299 when `p_shape_A` is a `PlaneShapeSW` object and when `p_shape_B` is a `MotionShapeSW` object, because `int support_count;` is not initialized by default, and because `MotionShapeSW::get_supports()` does not change `support_count` once passed as referenced parameter, and if the default value of `support_count` is greater than the length of `supports[16]`. I don't know if it is the good way to fix it because i'm not skilled ennough with the physics server inner working, but this fix prevents the crash and the test-scene seems to work correctly. |
||
---|---|---|
.. | ||
joints | ||
area_pair_sw.cpp | ||
area_pair_sw.h | ||
area_sw.cpp | ||
area_sw.h | ||
body_pair_sw.cpp | ||
body_pair_sw.h | ||
body_sw.cpp | ||
body_sw.h | ||
broad_phase_basic.cpp | ||
broad_phase_basic.h | ||
broad_phase_octree.cpp | ||
broad_phase_octree.h | ||
broad_phase_sw.cpp | ||
broad_phase_sw.h | ||
collision_object_sw.cpp | ||
collision_object_sw.h | ||
collision_solver_sat.cpp | ||
collision_solver_sat.h | ||
collision_solver_sw.cpp | ||
collision_solver_sw.h | ||
constraint_sw.cpp | ||
constraint_sw.h | ||
gjk_epa.cpp | ||
gjk_epa.h | ||
joints_sw.cpp | ||
joints_sw.h | ||
physics_server_sw.cpp | ||
physics_server_sw.h | ||
SCsub | ||
shape_sw.cpp | ||
shape_sw.h | ||
space_sw.cpp | ||
space_sw.h | ||
step_sw.cpp | ||
step_sw.h |