Fix crash in _map_age_dead_critters (#258)

Co-authored-by: Alexander Batalov <alex.batalov@gmail.com>
This commit is contained in:
Vasilii Rogin 2023-05-23 23:50:37 +03:00 committed by GitHub
parent 61293bd39c
commit 42c541012c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 22 additions and 21 deletions

View File

@ -2133,27 +2133,18 @@ Object* objectFindFirst()
{
gObjectFindElevation = 0;
ObjectListNode* objectListNode;
for (gObjectFindTile = 0; gObjectFindTile < HEX_GRID_SIZE; gObjectFindTile++) {
objectListNode = gObjectListHeadByTile[gObjectFindTile];
if (objectListNode) {
break;
ObjectListNode* objectListNode = gObjectListHeadByTile[gObjectFindTile];
while (objectListNode != NULL) {
Object* object = objectListNode->obj;
if (!artIsObjectTypeHidden(FID_TYPE(object->fid))) {
gObjectFindLastObjectListNode = objectListNode;
return object;
}
objectListNode = objectListNode->next;
}
}
if (gObjectFindTile == HEX_GRID_SIZE) {
gObjectFindLastObjectListNode = NULL;
return NULL;
}
while (objectListNode != NULL) {
if (artIsObjectTypeHidden(FID_TYPE(objectListNode->obj->fid)) == 0) {
gObjectFindLastObjectListNode = objectListNode;
return objectListNode->obj;
}
objectListNode = objectListNode->next;
}
gObjectFindLastObjectListNode = NULL;
return NULL;
}
@ -2167,9 +2158,14 @@ Object* objectFindNext()
ObjectListNode* objectListNode = gObjectFindLastObjectListNode->next;
while (gObjectFindTile < HEX_GRID_SIZE) {
while (true) {
if (objectListNode == NULL) {
objectListNode = gObjectListHeadByTile[gObjectFindTile++];
gObjectFindTile++;
if (gObjectFindTile >= HEX_GRID_SIZE) {
break;
}
objectListNode = gObjectListHeadByTile[gObjectFindTile];
}
while (objectListNode != NULL) {
@ -2219,9 +2215,14 @@ Object* objectFindNextAtElevation()
ObjectListNode* objectListNode = gObjectFindLastObjectListNode->next;
while (gObjectFindTile < HEX_GRID_SIZE) {
while (true) {
if (objectListNode == NULL) {
objectListNode = gObjectListHeadByTile[gObjectFindTile++];
gObjectFindTile++;
if (gObjectFindTile >= HEX_GRID_SIZE) {
break;
}
objectListNode = gObjectListHeadByTile[gObjectFindTile];
}
while (objectListNode != NULL) {