From ccb018357a587b554070855a88ff8790390144f6 Mon Sep 17 00:00:00 2001 From: MegaMech Date: Wed, 9 Jul 2025 16:36:56 -0600 Subject: Fix some UB (#438) * Update Game.cpp * Update actors_extended.c * Update Game.cpp --- src/port/Game.cpp | 4 ++-- src/racing/actors_extended.c | 2 +- 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((char*) actor - sizeof(void*)); + AActor* a = reinterpret_cast(reinterpret_cast(actor) - sizeof(void*)); auto actors = gWorldInstance.Actors; auto it = std::find(actors.begin(), actors.end(), static_cast(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; -- cgit v1.2.3