From a4d3c55fe41614a7b2449e4210053018a86d7e45 Mon Sep 17 00:00:00 2001 From: Kp Date: Sat, 13 Jun 2015 22:42:18 +0000 Subject: [PATCH] Use valptr for object highest_valid --- similar/main/object.cpp | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/similar/main/object.cpp b/similar/main/object.cpp index e3c145c4f..3e6d54c6c 100644 --- a/similar/main/object.cpp +++ b/similar/main/object.cpp @@ -980,8 +980,11 @@ objptridx_t obj_allocate() { Unused_object_slots=0; range_for (const auto i, highest_valid(Objects)) - if (Objects[i].type == OBJ_NONE) + { + const auto &&objp = vcobjptr(static_cast(i)); + if (objp->type == OBJ_NONE) Unused_object_slots++; + } } return objptridx(objnum); } @@ -1024,12 +1027,15 @@ static void free_object_slots(uint_fast32_t num_used) range_for (const auto i, highest_valid(Objects)) { - if (Objects[i].flags & OF_SHOULD_BE_DEAD) { + const auto &&objp = vobjptr(static_cast(i)); + if (objp->flags & OF_SHOULD_BE_DEAD) + { num_already_free++; if (MAX_OBJECTS - num_already_free < num_used) return; } else - switch (Objects[i].type) { + switch (objp->type) + { case OBJ_NONE: num_already_free++; if (MAX_OBJECTS - num_already_free < num_used) @@ -1041,7 +1047,7 @@ static void free_object_slots(uint_fast32_t num_used) case OBJ_FIREBALL: case OBJ_WEAPON: case OBJ_DEBRIS: - obj_list[olind++] = &Objects[i]; + obj_list[olind++] = objp; break; case OBJ_ROBOT: case OBJ_HOSTAGE: @@ -1588,7 +1594,10 @@ void obj_relink(const vobjptridx_t objnum,const vsegptridx_t newsegnum) void obj_relink_all(void) { range_for (const auto segnum, highest_valid(Segments)) - Segments[segnum].objects = object_none; + { + const auto &&segp = vsegptr(static_cast(segnum)); + segp->objects = object_none; + } range_for (const auto objnum, highest_valid(Objects)) {