Explorar o código

Portals - fix crash when logging link room names

The checking for link room IDs was checking for less than size(), but was not correctly checking for -1,
and therefore reading outside the array range. This PR fixes this.
lawnjelly %!s(int64=4) %!d(string=hai) anos
pai
achega
ef894c0966
Modificáronse 1 ficheiros con 1 adicións e 1 borrados
  1. 1 1
      scene/3d/room_manager.cpp

+ 1 - 1
scene/3d/room_manager.cpp

@@ -848,7 +848,7 @@ void RoomManager::_third_pass_rooms(const LocalVector<Portal *> &p_portals) {
 				int linked_room_id = (portal_links_out) ? portal._linkedroom_ID[1] : portal._linkedroom_ID[0];
 
 				// this shouldn't be out of range, but just in case
-				if (linked_room_id < _rooms.size()) {
+				if ((linked_room_id >= 0) && (linked_room_id < _rooms.size())) {
 					Room *linked_room = _rooms[linked_room_id];
 
 					String portal_link_room_name = _find_name_before(linked_room, "-room", true);