summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMegaMech <MegaMech@users.noreply.github.com>2025-07-09 16:36:56 -0600
committerGitHub <noreply@github.com>2025-07-09 16:36:56 -0600
commitccb018357a587b554070855a88ff8790390144f6 (patch)
tree92453006ec0c4b0466669801f0956e153e27c6b2
parent5277fced87de9f48455e862eb41b3cda1ce62c66 (diff)
Fix some UB (#438)
* Update Game.cpp * Update actors_extended.c * Update Game.cpp
-rw-r--r--src/port/Game.cpp4
-rw-r--r--src/racing/actors_extended.c2
2 files changed, 3 insertions, 3 deletions
diff --git a/src/port/Game.cpp b/src/port/Game.cpp
index f144664d6..4a9bdcfc4 100644
--- a/src/port/Game.cpp
+++ b/src/port/Game.cpp
@@ -619,7 +619,7 @@ struct Actor* CM_GetActor(size_t index) {
size_t CM_FindActorIndex(Actor* actor) {
// Move the ptr back to look at the vtable.
// This gets us the proper C++ class instead of just the variables used in C.
- AActor* a = reinterpret_cast<AActor*>((char*) actor - sizeof(void*));
+ AActor* a = reinterpret_cast<AActor*>(reinterpret_cast<char*>(actor) - sizeof(void*));
auto actors = gWorldInstance.Actors;
auto it = std::find(actors.begin(), actors.end(), static_cast<AActor*>(a));
@@ -627,7 +627,7 @@ size_t CM_FindActorIndex(Actor* actor) {
return std::distance(actors.begin(), it);
}
printf("FindActorIndex() actor not found\n");
- return 0;
+ return -1;
}
void CM_DeleteActor(size_t index) {
diff --git a/src/racing/actors_extended.c b/src/racing/actors_extended.c
index 0aed659ad..c21eb6918 100644
--- a/src/racing/actors_extended.c
+++ b/src/racing/actors_extended.c
@@ -721,7 +721,7 @@ void func_802B2914(struct BananaBunchParent* banana_bunch, Player* player, s16 b
func_802B4E30((struct Actor*) newBanana);
newBanana->flags = 0x9000;
newBanana->playerId = player - gPlayerOne;
- newBanana->parentIndex = (struct Actor*) CM_FindActorIndex(banana_bunch);
+ newBanana->parentIndex = CM_FindActorIndex(banana_bunch);
newBanana->youngerIndex = -1;
newBanana->unk_04 = 0x0014;
newBanana->bananaId = bananaId;