From fe1c3349e56c944abd3cc90c21ebc0b5ec95961b Mon Sep 17 00:00:00 2001 From: Bojidar Marinov Date: Tue, 8 Aug 2017 23:17:11 +0300 Subject: [PATCH] Fix freeze on close of game using 2D physics introduced by #9832 Additionally, port the fix to 3D physics, just in case --- servers/physics/physics_server_sw.cpp | 4 ++-- servers/physics_2d/physics_2d_server_sw.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/servers/physics/physics_server_sw.cpp b/servers/physics/physics_server_sw.cpp index c40503c426c..151fc444765 100644 --- a/servers/physics/physics_server_sw.cpp +++ b/servers/physics/physics_server_sw.cpp @@ -493,8 +493,8 @@ void PhysicsServerSW::body_set_space(RID p_body, RID p_space) { if (body->get_space() == space) return; //pointless - while (body->get_constraint_map().size()) { - RID self = body->get_constraint_map().front()->key()->get_self(); + for (Map::Element *E = body->get_constraint_map().front(); E; E = E->next()) { + RID self = E->key()->get_self(); if (!self.is_valid()) continue; free(self); diff --git a/servers/physics_2d/physics_2d_server_sw.cpp b/servers/physics_2d/physics_2d_server_sw.cpp index debd38d43a2..c698d614b8c 100644 --- a/servers/physics_2d/physics_2d_server_sw.cpp +++ b/servers/physics_2d/physics_2d_server_sw.cpp @@ -548,8 +548,8 @@ void Physics2DServerSW::body_set_space(RID p_body, RID p_space) { if (body->get_space() == space) return; //pointless - while (body->get_constraint_map().size()) { - RID self = body->get_constraint_map().front()->key()->get_self(); + for (Map::Element *E = body->get_constraint_map().front(); E; E = E->next()) { + RID self = E->key()->get_self(); if (!self.is_valid()) continue; free(self);