From cda8f5dc67b6876aa39b7f18fd6c982d21f1f185 Mon Sep 17 00:00:00 2001 From: Lurs <2795933+Lurs@users.noreply.github.com> Date: Mon, 30 Mar 2026 09:33:54 +0200 Subject: [PATCH] Fix softlock when entering Faron cave (and maybe others) in Release --- src/d/actor/d_a_e_fz.cpp | 7 +++++++ src/d/actor/d_a_e_oc.cpp | 8 ++++++++ src/d/actor/d_a_obj_stick.cpp | 7 +++++++ src/d/actor/d_a_tag_magne.cpp | 8 ++++++++ 4 files changed, 30 insertions(+) diff --git a/src/d/actor/d_a_e_fz.cpp b/src/d/actor/d_a_e_fz.cpp index 6fa54a0ffe..6673ba1092 100644 --- a/src/d/actor/d_a_e_fz.cpp +++ b/src/d/actor/d_a_e_fz.cpp @@ -905,9 +905,16 @@ s32 daE_FZ_c::_delete() { return 1; } +#if TARGET_PC +static int daE_FZ_Delete(daE_FZ_c* i_this) { + i_this->_delete(); + return 1; +} +#else static void daE_FZ_Delete(daE_FZ_c* i_this) { i_this->_delete(); } +#endif s32 daE_FZ_c::CreateHeap() { J3DModelData* model_data = (J3DModelData*)dComIfG_getObjectRes("E_FZ", 3); diff --git a/src/d/actor/d_a_e_oc.cpp b/src/d/actor/d_a_e_oc.cpp index 01f282b0ea..63db111ce7 100644 --- a/src/d/actor/d_a_e_oc.cpp +++ b/src/d/actor/d_a_e_oc.cpp @@ -2662,10 +2662,18 @@ int daE_OC_c::_delete() { return 1; } +#if TARGET_PC +static int daE_OC_Delete(daE_OC_c* i_this) { + fopAcM_RegisterDeleteID(i_this, "E_OC"); + i_this->_delete(); + return 1; +} +#else static void daE_OC_Delete(daE_OC_c* i_this) { fopAcM_RegisterDeleteID(i_this, "E_OC"); i_this->_delete(); } +#endif int daE_OC_c::CreateHeap() { J3DModelData* modelData = (J3DModelData*) dComIfG_getObjectRes(mName, 0x3); diff --git a/src/d/actor/d_a_obj_stick.cpp b/src/d/actor/d_a_obj_stick.cpp index 2e448c1579..aa46f13716 100644 --- a/src/d/actor/d_a_obj_stick.cpp +++ b/src/d/actor/d_a_obj_stick.cpp @@ -202,9 +202,16 @@ static u32 daObj_Stick_Create(void* i_this) { return static_cast(i_this)->create(); } +#if TARGET_PC +static int daObj_Stick_Delete(void* param_0) { + static_cast(param_0)->Delete(); + return 1; +} +#else static void daObj_Stick_Delete(void* param_0) { static_cast(param_0)->Delete(); } +#endif static void daObj_Stick_Execute(void* param_0) { static_cast(param_0)->Execute(); diff --git a/src/d/actor/d_a_tag_magne.cpp b/src/d/actor/d_a_tag_magne.cpp index 8b47511eeb..9c15398463 100644 --- a/src/d/actor/d_a_tag_magne.cpp +++ b/src/d/actor/d_a_tag_magne.cpp @@ -44,10 +44,18 @@ int daTagMagne_c::_delete() { return 1; } +#if TARGET_PC +static int daTagMagne_Delete(daTagMagne_c* i_this) { + int id = fopAcM_GetID(i_this); + i_this->_delete(); + return 1; +} +#else static void daTagMagne_Delete(daTagMagne_c* i_this) { int id = fopAcM_GetID(i_this); i_this->_delete(); } +#endif static void daTagMagne_Create(fopAc_ac_c* i_this) { daTagMagne_c* magne = static_cast(i_this);