From 931663568713a75f7f7f1ffe5b68221b6d892073 Mon Sep 17 00:00:00 2001 From: Hedara Date: Sun, 22 Feb 2026 13:36:32 +0100 Subject: [PATCH] Fix setting the wall clock crashing with OW_USE_FAKE_RTC set to FALSE and LTO=1 --- src/fake_rtc.c | 6 ++++++ src/rtc.c | 3 ++- src/scrcmd.c | 3 +++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/fake_rtc.c b/src/fake_rtc.c index 2024065b7d..c6b68d9105 100644 --- a/src/fake_rtc.c +++ b/src/fake_rtc.c @@ -50,6 +50,9 @@ void FakeRtc_TickTimeForward(void) void FakeRtc_AdvanceTimeBy(u32 days, u32 hours, u32 minutes, u32 seconds) { + if (!OW_USE_FAKE_RTC) + return; + struct DateTime dateTime; struct SiiRtcInfo *rtc = FakeRtc_GetCurrentTime(); @@ -63,6 +66,9 @@ void FakeRtc_AdvanceTimeBy(u32 days, u32 hours, u32 minutes, u32 seconds) void FakeRtc_ForwardTimeTo(u32 hour, u32 minute, u32 second) { + if (!OW_USE_FAKE_RTC) + return; + Script_PauseFakeRtc(); struct Time diff, target; struct SiiRtcInfo *fakeRtc = FakeRtc_GetCurrentTime(); diff --git a/src/rtc.c b/src/rtc.c index ace7bfb0c4..adab416446 100644 --- a/src/rtc.c +++ b/src/rtc.c @@ -349,7 +349,8 @@ void RtcCalcLocalTimeOffset(s32 days, s32 hours, s32 minutes, s32 seconds) gLocalTime.hours = hours; gLocalTime.minutes = minutes; gLocalTime.seconds = seconds; - FakeRtc_ManuallySetTime(gLocalTime.days, gLocalTime.hours, gLocalTime.minutes, seconds); + if (!OW_USE_FAKE_RTC) + FakeRtc_ManuallySetTime(gLocalTime.days, gLocalTime.hours, gLocalTime.minutes, seconds); RtcGetInfo(&sRtc); RtcCalcTimeDifference(&sRtc, &gSaveBlock2Ptr->localTimeOffset, &gLocalTime); } diff --git a/src/scrcmd.c b/src/scrcmd.c index e05190c18d..7983f54b43 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -3239,6 +3239,9 @@ bool8 ScrCmd_fwdtime(struct ScriptContext *ctx) bool8 ScrCmd_fwdweekday(struct ScriptContext *ctx) { + if (!OW_USE_FAKE_RTC) + return FALSE; + struct SiiRtcInfo *rtc = FakeRtc_GetCurrentTime(); u32 weekdayTarget = ScriptReadWord(ctx);